leecode数组

217. 存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]
输出:true

示例 2:

输入:nums = [1,2,3,4]
输出:false

示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true
 1 class Solution {
 2     public boolean containsDuplicate(int[] nums) {
 3         Arrays.sort(nums);//先对它进行排序
 4         for (int i = 0; i < nums.length - 1; i++) {
 5             if (nums[i] == nums[i + 1]) {//双指针
 6                 return true;
 7             }
 8         }
 9         return false;
10     }
11 }

 283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

 

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

public void moveZeroes(int[] nums) {
        int[] nums2 = nums;
        int j=0;
        int count=0;
        for(int i=0;i<nums2.length;i++){
            if(nums2[i]!=0){
                nums[j]=nums2[i];
                j++;
               
            }
        }
        for(int k=0;k<nums.length-j;k++){
            nums[k+j]=0;
        }
    }

 169. 多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:nums = [3,2,3]
输出:3

示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2
 1 public int majorityElement(int[] nums) {
 2         Arrays.sort(nums);
 3         int a = 0;
 4         int count = 1;
 5         int temp = nums[0];
 6         for(int i=1;i<nums.length;i++){     
 7             if(temp==nums[i]){
 8                 count++;
 9                 if(count>nums.length>>>1){
10                     break;
11                 }
12             }else{
13                 temp = nums[i];
14                 count=1;
15             }
16         }
17         return temp;
18     }

219. 存在重复元素 II

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [1,2,3,1], k= 3
输出:true

示例 2:

输入:nums = [1,0,1,1], k=1
输出:true

示例 3:

输入:nums = [1,2,3,1,2,3], k=2
输出:false
 1 public boolean containsNearbyDuplicate(int[] nums, int k) {
 2        
 3         for(int i=0;i<nums.length;i++){
 4             for (int j = i+1; j <=i+k &&j<nums.length; j++) {
 5                 int value = nums[j];
 6                 if(nums[i]==value){
 7                     return true;
 8                 }
 9             }
10         }
11         return false;
12     }

 

 
posted @ 2024-01-25 21:11  无名之辈的ggb  阅读(2)  评论(0编辑  收藏  举报