java清空数组的方法(java初始化数组赋值)

来源:国外服务器 在您之前已被浏览:1 次
导读:目前正在解读《java清空数组的方法(java初始化数组赋值)》的相关信息,《java清空数组的方法(java初始化数组赋值)》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《java清空数组的方法(java初始化数组赋值)》的详细说明。
国外云主机,www.2 bp .net

26. Remove Duplicates from Sorted Array

Easy

Given a sorted array nums, remove the duplicates in-place such that each element appears only once and returns the new length.

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

Clarification:

Confused why the returned value is an integer but your answer is an array?

Note that the input array is passed in by reference, which means a modification to the input array will be known to the caller as well.

Internally you can think of this:

// nums is passed in by reference. (i.e., without making a copy)int len = removeDuplicates(nums);// any modification to nums in your function would be known by the caller.// using the length returned by your function, it prints the first len elements.for (int i = 0; i < len; i++) {    print(nums[i]);}

Example 1:

Input: nums = [1,1,2]Output: 2, nums = [1,2]Explanation: Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the returned length.

Example 2:

Input: nums = [0,0,1,1,1,2,2,3,3,4]Output: 5, nums = [0,1,2,3,4]Explanation: Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively. It doesn't matter what values are set beyond the returned length.

Constraints:

  • 0 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • nums is sorted in ascending order.

给定一个有序数组,删除重复内容,使每个元素只出现一次,并返回新的长度。

题目要求不要为其他数组分配额外的空间,您必须通过在 O(1)额外的内存中就地修改输入数组来实现这一点。

解题思路:

这是一道难度简单的题目,已知条件数组是已排序的,且不能新建数组,这就是告诉我们除了创建数组指针只能改变给定数组来得到结果。

class Solution { public int removeDuplicates(int[] nums) { int n = nums.length; if (n == 0) { return 0; //首先排除边界的case } int counter = 0, i = 1; //定义两个指针,counter代表当前去重的长度,i是遍历的指针,为什么i是从1开始? 因为起始位置的数组元素已经计算到结果中,所以开始从二个元素遍历 while(i < n) { if (nums[counter] == nums[i]) { //判断当前遍历的数组元素和去重后的最大数组元素是否相同,如果相同则继续遍历,不做任何操作。 i++; } else { //如果不同,则将数组当前遍历的元素替换到去重数组 counter++; //在替换前首先将去重指针后移一位 nums[counter] = nums[i]; i++; //继续遍历 } } return counter + 1; //counter是去重指针的最后一位,所以长度需要加1 }}

总结:这类数组去重的题会经常出现在面试环节中(3sum),看到数组去重我们就要想到对数组先进行排序,然后通过一个n的遍历就能解决问题。

另外就是不占用额外空间,只能新建指针和当前给定的数组来操作。

国外云主机,www.2 bp .net
提醒:《java清空数组的方法(java初始化数组赋值)》最后刷新时间 2023-03-27 02:22:26,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《java清空数组的方法(java初始化数组赋值)》该内容的真实性请自行鉴别。