leetcode简单题

发布时间 2023-05-17 17:16:59作者: 小刘不要摆烂了

1. 两数之和
①difference[]=target - num[]中的数 单循环
②在num[]中寻找与difference[]相等但两者下标不等的数 双重循环 找到第一个后循环停止

9.判断数字是否为回文数
①将数字转换为字符串
②使用双指针,一个指向前端,一个指向后端
③循环:当前端指针小于后端指针。若前端、后端数字不相等,返回false;否则,前端指针++,后端指针++
④正常就返回true

13.罗马数字转换为整数
算法1:从左到右遍历罗马数字,如果当前字符代表的数字小于下一个字符代表的数字,则减去当前字符代表的数字;否则,加上当前字符代表的数字。
算法2:
①使用字典,记录7种字符数值,6种特殊规则的值
②使用replace()方法将传入字符串任一的6种特殊规则字符替换成之前定义好的字符
③遍历传入字符串:累加

14.查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""
目的 | 步骤
算法1:利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀
算法2:
①查找列表中最短字符串,其长度作为外循环的停止条件 |
初始化length等于第一个字符串长度;遍历列表,如果当前字符串小于length,则更新length。
②初始化pre为空字符,记录最长公共前缀
③外层循环控制字符索引,比较的长度为length;内层循环控制字符串索引,比较每个字符串相同索引的字符是否一样,比较完来到外层 | 内循环体:初始化flag为外层第i个字符,如果当前字符与flag不等则返回pre并结束内循环;外循环体:内循环体;pre添加flag的字符,因为flag是一个前缀字符
④返回pre值

20.有效括号:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
算法1:用replace来去除"()","[]","{}"
算法2:定义一个栈(列表)和字典,键为左括号,值为右括号。
遍历输入的字符串,如果是左括号,将其入栈;如果是右括号,判断栈是否为空,为空返回False;判断栈顶元素是否与之匹配,如果匹配则出栈,否则返回False。
如果遍历结束后栈为空,则说明匹配成功,返回True,否则返回False。

21.合并两个有序链表
①边界设置:如果list1空,返回list2;如果list2空,返回list1.(else不能乱用)
②初始化2个指针,一个指向头结点的指针l,一个滑动指针s辅助用的
③比较list1与list2的第一个结点值谁小,则L与s指向值小的结点
④遍历list1与list2,谁的结点小谁就放到s之后,s再指向末尾结点
⑤遍历完后,若A或B谁未空,谁就放在s之后

26.删除有序数组的重复项
①如果nums空,则返回0
②初始化k=1,记录唯一元素数量;初始化before=0与now=1,before为上一个元素的索引,now为当前元素的索引
③遍历有序数组(次数为数组长度减一),若当前元素与上一个元素相等,去除当前元素;否则,k += 1,before += 1,now +=1
④返回k

27.移除数组中所有数值等于val的元素
①初始化k=len(nums),记录数组的长度;初始化now=0,记录当前元素的索引
②遍历有序数组,若当前元素与val相等,删除当前元素,k -= 1;否则,now +=1
③返回k

35.搜索探查的位置。
①如果目标值大于数组末尾值,则返回末尾索引
②遍历数组,如果数组中找到目标值,则返回其索引
③遍历数组,若目标值是否小于数组值,则将目标值插入当前索引位置,返回索引
④返回0,因为这是判断当nums为空时返回0

58.最后一个单词的长度

66.数组加一
算法1:
①从后往前遍历数组,若数组当前元素不为9,则将当前元素加一,返回该数组;否则,当前元素为0,记录当前进位索引
②若索引为0,则将原数组多扩充一位,第一个元素为1,其余元素为0
③返回该数组
算法2:
①初始化sum=0,记录数组中组成的值有多大
②遍历数组,数组索引值×10的次方放入sum中
③sum自加1;数组中值全部归零
④当sum对10取整不为0时,数组中放入sum对10取余的数,并将sum对10取整放入数组中
⑤数组添加sum,因为这还是余数
⑥返回数组digits

67.二进制求和

69.求x的平方根,只保留整数部分n(不能使用内置函数)
注意1:除了0,1,任何x平方根的整数部分不会超过自身的一半
算法1:二分查找法
①对特殊值0,1进行处理
②初始化left=1, right=x/2,在区间[left, right]查找目标元素

算法2:牛顿迭代法