剑指Offer之Java算法习题精讲数组与字符和等差数列

题目一

 解法

class Solution {
    public int[] relativeSortArray(int[] arr1, int[] arr2) {
        int[] arr = new int[1001];
        int[] ans = new int[arr1.length];
        int index = 0;
        for(int i =0;i<arr1.length;i++){
            arr[arr1[i]]+=1;
        }
        for(int i = 0;i<arr2.length;i++){
            while(arr[arr2[i]]>0){
                arr[arr2[i]]--;
                ans[index] = arr2[i];
                index++;
            }
        }
        for(int i =0;i<arr.length;i++){
            if(arr[i]!=0){
                for(int j =0;j<arr[i];j++){
                    ans[index] = i;
                    index++;
                }
            }
        }
        return ans;
    }
}

题目二

 解法

class Solution {
    public int findLucky(int[] arr) {
        int[] nums = new int[500];
        for(int i =0;i<arr.length;i++){
            nums[arr[i]]+=1;
        }
        int max = -1;
        for(int i = 1;i<nums.length;i++){
            if(i == nums[i]){
                max = Math.max(max,i);
            }
        }
        return max;
    }
}

题目三

 解法

class Solution {
    public int maxPower(String s) {
        if(s.length()==1) return 1;
        int left = 1;
        int max = Integer.MIN_VALUE;
        int con = 1;
        while(left<s.length()){
            if(s.charAt(left)==s.charAt(left-1)){
                con++;
                max = Math.max(con,max);
            }else{
                max = Math.max(con,max);
                con = 1;
            }
            left++;
        }
        return max;
    }
}

题目四

 解法

class Solution {
    public boolean canMakeArithmeticProgression(int[] arr) {
        Arrays.sort(arr);
        int num = arr[1]-arr[0];

        for(int i = 1;i<arr.length;i++){
            if(arr[i]-arr[i-1]==num){
                continue;
            }else{
                return false;
            }
        }
        return true;
    }
}

到此这篇关于剑指Offer之Java算法习题精讲数组与字符和等差数列的文章就介绍到这了,更多相关Java 数组内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java字符串拼接详解

    目录 一.“+” 操作符 二.StringBuilder(非线程安全) 三.StringBuffer(线程安全) 四.String 类的 concat 方法 五.String 类的 join 方法 六.StringUtils.join 七.不建议在 for 循环中使用 “+” 进行字符串拼接 总结 String类原生的字符串处理方法short s=1;s=s+1;与short s=1;s+=1;的区别 一.“+” 操作符 “+” 操作符是字符串拼接最常用的方法之一.编译的时候会把 “+” 操作符

  • Java深入浅出数组的定义与使用下篇

    接着上一篇继续,老铁们 1.检查数组的有序性 给定一个整型数组, 判断是否该数组是有序的(升序) public static boolean isUp(int[] array){ for (int i = 0; i <array.length-1 ; i++) { if(array[i]>array[i+1]){ return false; } } return true; } public static void main(String[] args) { int[] array = {12

  • Java 在游戏中探索数组二维数组

    目录 什么是数组 举例(装备栏) 声明数组 int类型 String类型 数组操作 遍历数组 二维数组 声明二维数组 这里是JAVA成仙路,关注我学习JAVA不迷路 什么是数组 数组(Array)是有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量/12713827).用于区分数组的各个元素的数字编号称为下标.数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式.

  • java字符串反转的7种方法

    目录 1.用stringBuffer或者stringBuilder自带的reverse方法 2.将字符串拆分为char数组 3.stringBuffer倒序拼接 4.利用栈的先进后出 5.二分换位反转 6.切割递归反转 7.二分递归反转 1.用stringBuffer或者stringBuilder自带的reverse方法     public static String reverseTestOne(String s) {         return new StringBuffer(s).r

  • Java十分钟掌握数组与常见异常

    数组的定义 1:单个变量能存储信息 2:用来存储具有相同数据类型的数据集合,可以使用共同的名字来引用数组中存储的数据. 特点 数组可以存储任何类型的数据,包括原始数据类型和引用数据类型,但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据. 数组的使用 声明一个数组变量来存放该数组 语法 数据类型 [] 数组名 数据类型 数组名[] //声明一个int类型 名为 numebr 的数组 int [] number; int number []; //以上两种方法都可以 创建一个新的数组对象并

  • Java深入浅出数组的定义与使用上篇

    目录 一.数组的基本用法 1.什么是数组 2.定义数组  3.数组的使用 打印数组:  二.数组作为方法的参数 基本用法 三.数组练习题 1.交换两个变量的值 2.写一个方法,将数组中的每个元素都*2  3.模拟实现tostring函数 4.找数组中的最大元素  5.查找数组中指定元素(顺序查找)  6.查找数组中指定元素(二分查找)   总结: 一.数组的基本用法 1.什么是数组 数组:存储一组相同数据类型的数据的集合. 2.定义数组  int[] :int类型数组  double[] :do

  • 剑指Offer之Java算法习题精讲数组与字符和等差数列

    题目一  解法 class Solution { public int[] relativeSortArray(int[] arr1, int[] arr2) { int[] arr = new int[1001]; int[] ans = new int[arr1.length]; int index = 0; for(int i =0;i<arr1.length;i++){ arr[arr1[i]]+=1; } for(int i = 0;i<arr2.length;i++){ while

  • 剑指Offer之Java算法习题精讲数组与列表的查找及字符串转换

    题目一 解法 class Solution { public String toLowerCase(String s) { StringBuilder sb = new StringBuilder(); for(int i = 0;i<s.length();i++){ char ch = s.charAt(i); if('A'<=ch&&ch<='Z'){ ch = (char)(ch+32); } sb.append(ch); } return sb.toString(

  • 剑指Offer之Java算法习题精讲数组与字符串

    题目一  解法 class Solution { public int findLengthOfLCIS(int[] nums) { if(nums.length==1) return 1; int fast = 1; int tmp = 1; int max = Integer.MIN_VALUE; while(fast<nums.length){ if(nums[fast]>nums[fast-1]){ tmp++; max = Math.max(max,tmp); }else{ max

  • 剑指Offer之Java算法习题精讲数组与字符串题

    题目一 解法 class Solution { public int thirdMax(int[] nums) { Arrays.sort(nums); if(nums.length<3){ return nums[nums.length-1]; } int p = 1; for(int i =nums.length-2;i>=0;i--){ if(nums[i]==nums[i+1]){ }else{ ++p; if(p==3){ return nums[i]; } } } return n

  • 剑指Offer之Java算法习题精讲数组与二叉树

    题目一  解法 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; *

  • 剑指Offer之Java算法习题精讲数组查找与字符串交集

    题目一 数组题--二分查找法 写一个函数查找给定的数组中指定的数值 具体题目如下  解法 class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left<=right){ int mid = left+(right-left)/2; if(nums[mid]==target){ return mid; }else if(nums[m

  • 剑指Offer之Java算法习题精讲链表专题篇

    题目一  解法 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solut

  • 剑指Offer之Java算法习题精讲二叉树与斐波那契函数

    题目一 解法 class Solution { public int fib(int n) { int[] arr = new int[31]; arr[0] = 0; arr[1] = 1; for(int i = 2;i<=n;i++){ arr[i] = arr[i-2]+arr[i-1]; } return arr[n]; } } 题目二  解法 /** * Definition for a binary tree node. * public class TreeNode { * in

  • 剑指Offer之Java算法习题精讲二叉树与N叉树

    题目一  解法 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; *

  • 剑指Offer之Java算法习题精讲二叉树专题篇下

    题目一  解法 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; *

随机推荐