找回密码
 立即注册

LeetCode26. 删除有序数组中的重复项 27. 移除元素 35. 搜索插入位置 数组,双指针 二分查找

焦尔蕾 2025-12-24 12:20

26. 删除有序数组中的重复项

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k。去重后,返回唯一元素的数量 k

nums 的前 k 个元素应包含 排序后 的唯一数字。下标 k - 1 之后的剩余元素可以忽略。

具体代码:

[code]package com.example.shuzu; import org.junit.Test; public class LeetCode26 { @Test public void test(){ int[] nums = {0,0,1,1,1,2,2,3,3,4}; System.out.printf(String.valueOf(removeDuplicates(nums))); } public int removeDuplicates(int[] nums) { if(nums.length ==0){ return 0; } int index = 1; for (int i=1;i[/code]

27. 移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

  • 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
  • 返回 k

具体代码:

[code]package com.example.shuzu; import org.junit.Test; public class LeetCode27 { @Test public void test(){ int[] nums = {3,2,2,3}; int val = 3; System.out.printf(String.valueOf(removeElement(nums,val))); } public int removeElement(int[] nums, int val) { int index = 0; for(int i =0;i[/code]

35.搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

[code]package com.example.shuzu; import org.junit.Test; public class LeetCode35 { @Test public void test(){ int[] nums = {1,3,5,6}; int target = 5; System.out.printf(String.valueOf(searchInsert(nums,target))); } public int searchInsert(int[] nums, int target) { int n = nums.length; int left = 0,right = n-1,ans = n; while(left <= right){ int mid = ((right - left) >>1) + left; if(target <= nums[mid]){ ans=mid; right = mid - 1; }else{ left = mid +1; } } return ans; } }[/code]

 


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

路过

雷人

握手

鲜花

鸡蛋
文章点评
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。