首页 > 编程语言 >代码随想录算法训练营第一天 | 27. 移除元素 | 704. 二分查找

代码随想录算法训练营第一天 | 27. 移除元素 | 704. 二分查找

时间:2024-02-04 16:44:39浏览次数:34  
标签:27 target val nums int 元素 随想录 数组 移除

 

704. 二分查找

  已解答 简单  

相关标签

相关企业  

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1


示例 1:

输入:
nums
target
输出:解释:
nums

示例 2:

输入:
nums
target
输出:解释:
nums

 

提示:

  1. 你可以假设 nums 中的所有元素是不重复的。
  2. n 将在 [1, 10000]之间。
  3. nums 的每个元素都将在 [-9999, 9999]之间。

请问您在哪类招聘中遇到此题? 1/5 社招 校招 实习 未遇到 通过次数 1.2M   提交次数 2.1M   通过率 55.0%
  1. 想考虑 是左闭右闭, 还是左闭右开, 再处理边界时 要保证这个不变量

 

func search(nums []int, target int) int { left, right := 0, len(nums) for left < right { mid := left + (right-left)/2 if nums[mid] == target { return mid } if nums[mid] > target { right = mid } else { left = mid + 1 } } return -1 }

 


27. 移除元素

  已解答 简单  

相关标签

相关企业  

提示

 

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

 

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

 

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

示例 2:

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,3,0,4]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

 


func removeElement(nums []int, val int) int { varslowint forfast := 0; fast < len(nums); fast++ { if nums[fast] != val{ nums[slow] = nums[fast] slow++ } } return slow }

标签:27,target,val,nums,int,元素,随想录,数组,移除
From: https://www.cnblogs.com/suxinmian/p/18006493

相关文章

  • 代码随想录算法训练营第十一天 | 20. 有效的括号 | 1047. 删除字符串中的所有相邻重
     有效的括号 已解答简单 相关标签相关企业 提示 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应......
  • 代码随想录 day39 不同路径 不同路径 II
    不同路径这题由于说明了只能向下和向右那么对于终点而言显然只能由[i][j-1]+[i-1][j]种路线这就是状态转移方程那么初始值要赋予的就是上边和左边都是一也就是直接从边边到达重点的这样就保证我们的状态转移方程有数值可以将计算不同路径II这题难解的点在于障......
  • [ABC279G] At Most 2 Colors 题解
    题目链接题目大意有一个\(1\timesN\)的格子和\(c\)种颜色,每个格子可以染上\(c\)种颜色中的一种。求任意相邻\(k\)个格子染色种类不超过\(2\)种的方案数。思路很明显,这是一个计数DP的题设\(f_i\)表示前\(i\)个格子染色的方案数,考虑第\(i\)个格子的染色情......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复
    20.有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。题目链接:20.有效的括号-力扣(LeetCode)思路:只......
  • 代码随想录 da38 斐波那契数 爬楼梯 使用最小花费爬楼梯
    斐波那契数本题非常简单只是熟悉动态规划的基本流程爬楼梯本题是上题的略微扩展,本题没有明确给出状态转移方程和初始值这里的想法是到第i层需要先到第i-1层或者第i-2层那么实际上第i层的到达方法数就是第i-1层和第i-2层的到达方法数的和使......
  • Poj 3278 Catch That Cow (BFS+队列)
    #include<iostream>#include<queue>#include<cstring>usingnamespacestd;constintN=1e5+10;intn,k,line[N],way;structnode{intloc,step;};queue<node>q;voidBFS(intn,intk){while(!q.empty())q.pop();nodestart,next......
  • 代码随想录算法训练营第十天| 堆栈理论基础 232.用栈实现队列 225. 用队列实现栈
    堆栈理论基础 代码随想录(programmercarl.com)STL中栈往往不被归类为容器,而被归类为containeradapter(容器适配器)。栈的内部结构,栈的底层实现可以是vector,deque,list都是可以的,主要就是数组和链表的底层实现。我们常用的SGISTL,如果没有指定底层实现的话,默认是以deque为缺......
  • day27 代码随想录算法训练营 40. 组合总和 II
    题目:40.组合总和II我的感悟:只要在路上就不怕走的慢。卡尔的视频慢慢听0.75倍听还是可以的。只要状态好,就可以学。多学会鼓励理解难点:代码难点:①notused[i-1]等同于used[i-1]==0 这里用的是True和False,所以用的是notused[i-1]②i>0为了防止i-1越界③剪枝......
  • 代码随想录算法训练营第九天| 28. 实现 strStr() 459.重复的子字符串 字符串总结 双
     28.实现strStr()给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从0开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。题目链接:28.找出字符串中第一个匹配项的下标-力扣(LeetCode)思路:标......
  • 双轴步进驱动芯片方案-TMC5272AWX+T
     TMC5272是一款高性能的双轴步进电机控制器和驱动器。支持2.1V至20V的电压范围,2*0.8ARMS。集成了四个20VH-Bridges。两个Quadrature Encoder(正交编码器)接口StealthChop2(静音斩波)技术,解决常规步进电机在低速时候带有的抖动和噪声困扰的难题。SpreadCycle(高动态斩波)模式,高......