Day38 | 1365. 有多少小于当前数字的数字、941. 有效的山脉数组、1207. 独一无二的出现次数、283. 移动零、189. 轮转数组

发布于:2025-03-27 ⋅ 阅读:(43) ⋅ 点赞:(0)

1365. 有多少小于当前数字的数字

题目链接:1365. 有多少小、于当前数字的数字 - 力扣(LeetCode)

题目难度:简单

代码:

class Solution {
    public int[] smallerNumbersThanCurrent(int[] nums) {
        Map<Integer,Integer> map=new HashMap<>();
        int[] res=Arrays.copyOf(nums,nums.length);
        Arrays.sort(res);
        for(int i=0;i<res.length;i++){
            if(!map.containsKey(res[i]))
                map.put(res[i],i);
        }
        for(int i=0;i<nums.length;i++){
            res[i]=map.get(nums[i]);
        }
        return res;
    }
}

941. 有效的山脉数组

题目链接:941. 有效的山脉数组 - 力扣(LeetCode)

题目难度:简单

代码:

class Solution {
    public boolean validMountainArray(int[] arr) {
        if(arr.length<3) return false;
        int left=0;
        int right=arr.length-1;
        while(left+1<arr.length&&arr[left]<arr[left+1])
            left++;
        while(right>0&&arr[right]<arr[right-1])
            right--;
        if(left==right&&left!=0&&right!=arr.length-1)
            return true;
        return false;
    }
}

1207. 独一无二的出现次数

题目链接:1207. 独一无二的出现次数 - 力扣(LeetCode)

题目难度:简单

代码:

class Solution {
    public boolean uniqueOccurrences(int[] arr) {
        int[] count=new int[2001];
        for(int i=0;i<arr.length;i++){
            count[arr[i]+1000]++;
        }
        boolean[] flag=new boolean[1002];
        for(int i=0;i<=2000;i++){
            if(count[i]>0){
                if(flag[count[i]]==false)
                    flag[count[i]]=true;
                else
                    return false;
            }
        }
        return true;
    }
}

283. 移动零

题目链接:283. 移动零 - 力扣(LeetCode)

题目难度:简单

代码:

class Solution {
    public void moveZeroes(int[] nums) {
        int slow=0;
        for(int fast=0;fast<nums.length;fast++){
            if(nums[fast]!=0)
                nums[slow++]=nums[fast];
        }
        for(int j=slow;j<nums.length;j++){
            nums[j]=0;
        }
    }
}

189. 轮转数组

题目链接:189. 轮转数组 - 力扣(LeetCode)

题目难度:中等

代码:

class Solution {
    public void reverse(int[] nums,int start,int end){
        for(int i=start,j=end;i<j;i++,j--){
            int temp=nums[i];
            nums[i]=nums[j];
            nums[j]=temp;
        }
    }
    public void rotate(int[] nums, int k) {
        int n=nums.length;
        k%=n;
        reverse(nums,0,n-k-1);
        reverse(nums,n-k,n-1);
        reverse(nums,0,n-1);
    }
}