首页 > 代码库 > 编辑器不好用,接上一篇完成今日任务
编辑器不好用,接上一篇完成今日任务
(3)Remove Duplicates from Sorted Array
最优解代码如下:【注意最标准的代码风格!!!】
1 public class Solution { 2 public int removeDuplicates(int[] nums) { 3 if (nums == null || nums.length == 0) { 4 return 0; 5 } 6 7 int index = 0; 8 for (int i = 0; i < nums.length; i++) { 9 if (nums[i] != nums[index]) { 10 nums[++index] = nums[i]; 11 } 12 } 13 return index + 1; 14 15 } 16 }
解题思路:使用index记住第一个元素的位置,后面元素依次跟它比较,不相同的时候将不相同的元素赋给index+1的位置,然后后面元素继续跟index+1比较。。。这样index的值加1就是返回不相同元素数组的长度。
(4)Merge Sorted Array
1 public class Solution { 2 public void merge(int[] nums1, int m, int[] nums2, int n) { 3 int i = m-1, j = n-1, index = m + n - 1; 4 while (i >= 0 && j >= 0) { 5 if (nums1[i] > nums2[j]) { 6 nums1[index--] = nums1[i--]; 7 } 8 else { 9 nums1[index--] = nums2[j--]; 10 } 11 } 12 while (i >= 0) { 13 nums1[index--] = nums1[i--]; 14 } 15 while (j >= 0) { 16 nums1[index--] = nums2[j--]; 17 } 18 } 19 }
解题思路:从nums1数组的最高位即 m+n位依次向下添加元素。index是合并后数组的位置。两个数组的最高位开始比较,哪个数值大就哪个放在index位,然后index减1直到其中一个数组放完,另一个数组余下的一次放好就OK。
编辑器不好用,接上一篇完成今日任务
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。