首页 > 其他分享 >day1数组理论基础,704. 二分查找,27. 移除元素

day1数组理论基础,704. 二分查找,27. 移除元素

时间:2023-11-29 22:38:12浏览次数:50  
标签:27 val nums 704 元素 数组 移除 写法

数组理论基础,704. 二分查找,27. 移除元素

1数组理论基础

1.1 数组概念

  • 定义:存放在连续内存空间上的相同类型数据的集合。
  • 特点:1.数组中数据类型相同 2.数组所占空间连续

1.2 数组创建

2 704.二分查找

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

注:有序数组,无重复元素

2.1题解

写法1[left,right]

image-20231129204639388

写法2[left,right)

稍微理解了一下,就是在选定最大值的时候,right的角标在不在数组内,在就是右闭的写法,不在就是右开的写法。本质相同

3 27.移除元素

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

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

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

示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。

示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

暴力法:

image-20231129213406320

image-20231129213349536

双指针法

定义了2个角标,第一个进行for循环寻找删除以外的值,将其覆盖给第二个角标,第二个角标在赋值后+1

总结:

没有做到闭卷,都是看一遍,然后复现的

今天过了一下数组,感觉基本都是熟悉的。

二分法,复习了一下vector类的写法,关键在于right取不取数组最后一个也就是最大值,分为二种写法

删除元素暴力法,在于后面的i--,size--。其实数组本身大小不变,数组多出的位置都是最后一个元素的值;双指针法优化为寻找并覆盖,类似于反推法 相向双指针法:左边找等于val的元素,右边找不等于的元素,把右边的值覆盖左边的值,最后数组中不含val,但右边一个元素多出val的个数

发现运算优先级不够熟悉:比如++i,i++

标签:27,val,nums,704,元素,数组,移除,写法
From: https://www.cnblogs.com/nrtnrt/p/17866054.html

相关文章

  • CF1827C Palindrome Partition 题解
    题目链接点击打开链接题目解法首先考虑一个朴素的\(dp\)令\(f_i\)表示以\(i\)结尾的合法子串的个数为了不重不漏,我们令\(le_i\)表示以\(i\)为右端点,离\(i\)最近的偶回文串的左端点,然后不难得到转移为\(f_i=f_{le_i-1}+1\)为什么不会漏?考虑以\(i\)为右端点,且比......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
    LeetCode704二分查找题目链接:LeetCode704左闭右闭:视频讲解:手把手带你撕出正确的二分法思路:在循环条件中注明left<=right,即[left,right]classSolution{public:intsearch(vector<int>&nums,inttarget){intleft=0,right=nums.size()-1......
  • FileNotFoundError: [WinError 2] 系统找不到指定的文件。: '0054243eb93327df4b59023
    importos#指定目录directory='E:\\pythonProject\\a'#获取当前目录下所有图片文件image_files=[fforfinos.listdir(directory)iff.endswith('.jpg')orf.endswith('.png')orf.endswith('.jpeg')]#重命名图片文件fori,fileinenumer......
  • 「Log」做题记录 2023.11.27-
    \(2023.11.27-2023.12.3\)\(\color{black}{P6965}\)2-sat是显著的。对于无问号串,直接否定向自己连边即可,然后塞到Trie树里。Trie树上用子树、路径前缀优化建图即可。\(\color{blueviolet}{P4334}\)圆方树,点是显著的,割边转换为对应方点即可。\(\color{blueviolet}{CF855......
  • [翻译]——How the MySQL Optimizer Calculates the Cost of a Query (Doc ID 1327497
    本文是对这篇文章HowtheMySQLOptimizerCalculatestheCostofaQuery(DocID1327497.1)[1]的翻译,翻译如有不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢!适用于:MySQL4.0及后续更高的版本本文档中的内容适用于任何平台。目标了解MySQL优化器如......
  • [ABC277G] Random Walk to Millionaire 题解
    题目链接点击打开链接题目解法首先\(O(n^3)\)的\(dp\)是显然的,令\(f_{i,j,k}\)为第\(i\)步在\(j\),当前等级为\(k\)的\([i,n]\)步获得钱数的期望,转移枚举出边即可一个很妙的优化是:贡献都是\(k^2\)的形式,所以我们考虑维护\(k\)的\(0,1,2\)次幂,即\(\sum,\sum......
  • SpringMVC_2023_11_27_2 SpringMVC_入门(注解形式)
    SpringMVC_入门---(注解形式)2023-11-2816:31:09星期二常用的注解:@Controller:标注当前类为:处理器@RequestMapping:设置请求链接SpringMVC注解项目的搭建a) 依赖的引入<dependencies><dependency><groupId>javax.servlet</groupId><......
  • 2023-2024-1 20211327 myxxd(课上测试)
    myxxd(课上测试)学***d的使用,提交至少3个应用截图xxd的主要功能是什么?需要使用什么系统调用来实现?写出你的推导过程,命令xxd主要用于查看文件的十六进制表示,并提供了一些额外的功能,如生成C语言风格的数组表示。它的主要功能包括:查看文件的十六进制表示:显示文件内容的十......
  • 聪明办法学python-11.27——11.29笔记打卡
    一、python中条件语句的应用总体代码结构为:ifTrue:dosomethingelse:doother简单描述为“True”为条件,当条件为真的时候,执行“dosomething”,否则就执行“doother”。例如:任务:实现一个函数,返......
  • 聪明办法学Python_task3_11.27-11.28
    聪明办法学Python_task3_11.27-11.28聪明办法学Python_task3_11.27-11.281.task05条件1.1if-else语句1.2if-else推导式1.3match-case语句2.talk01代码风格1.task05条件1.1if-else语句分为if、if-else、if-elif-elseif条件1:语句1elif条件2:......