数组练习题(leetcode)

1.给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 使得 num1 成为一个有序数组。

说明:

  • 初始化 nums1 和 nums2 的元素数量分别为 m 和 n
  • 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
  • 输入:
    nums1 = [1,2,3,0,0,0], m = 3
    nums2 = [2,5,6],       n = 3
    
    输出: [1,2,2,3,5,6]
  • class Solution {
        public void merge(int[] nums1, int m, int[] nums2, int n) {
             for(int i=0;i<n;i++){
                nums1[m++]=nums2[i];
            }
            Arrays.sort(nums1);
        }
            
        }

    2.

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

    不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

  • 示例 1:

    给定数组 nums = [1,1,2], 
    
    函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2.你不需要考虑数组中超出新长度后面的元素。
  • class Solution {
        public int removeDuplicates(int[] nums) {
            if(nums.length==0){
                return 0;
            }
            int index=0;
            for(int j=1;j<nums.length;j++){
                    if(nums[index]!=nums[j]){
                        index++;
                        nums[index]=nums[j];
                    }
                }
          
            return index+1;
                
            }
       
        }
    

猜你喜欢

转载自blog.csdn.net/ranguangrong/article/details/88655447