day2
第0次是比较出最大的,n个数字比较出最大的数,需要证明n-1次自己比n-1个数字大
从第一个元素开始比较,如果比后面元素大,就交换位置往后移动
如果比后面元素小就不东,这样每次都能找到未排序数组的最大元素
插入排序就像摸扑克牌,每次摸一张,把他插入到正确位置
插入排序,每次都从待排数组里面找出一个最小的,插入到已经排好的数组末尾
第一次就直接插入,后续的话直接插入顺序数组末尾
快慢指针,快指针一直往前遍历,慢指针在后面接住非零数据,最后全零部分直接填充
for 遍历 range(len(nums)) 就是遍历0到len(nums) -1
for i,num in enumerate(nums):可以一个个遍历数组中的内容
用last标记当前最后一个0 如果后面是1 那就算i-last 那么差值就是长度
因为下标从0开始 那么last就应该设置为-1 0-(-1)=1才是正确的长度
快慢指针,前面跑,后面接,因为重复元素是相邻的,所以只用比较nums[i] nums[i-1]
另外需要考虑数组越界的问题,如果j在最开始,j-1就会报错,需要单独考虑
同上,因为只需要保留两个相同,只需要第三个不等于前两个,就可以append
nums[i] !=nums[j-2],第一第二单独考虑,如果i到第三个了,nums i !=nums【j-2】表示第三个数1 等于第一个数 不加入
所有元素的最大公约数为k,那么靠着k开始构建,最小元素应该为k,第二小的应该为k+k
第三小的应该为3k,第四小的应该再加上k
所以元素组合为k 2k 3k 4k .... nk
所以求和为(k+nk)*n//2
先找到-1所在下标,然后判断左侧最大值和右侧最大值
就是一个环,求两个点之间的距离,看正这走反着走哪个距离更短
易错点在于给定的xy是第几个第几个 我们要换成下标,
而且x可能大于y 为了方便判断 ,需要做一个三元判断
每次改一个值,求每次改动后的和
找到最大的行数,列数,计算增量,再上原来计算的和,就可以得到最后的和
同上,计算两个方向的路径比较大小,对切片的数组进行求和即可
快慢指针,快指针在前面遍历,只要不是val就丢给slow,注意enumerate返回的是一个迭代器,让数组,[ index, fast ]
判断当前字符是不是合法的,就判断前面一个字符是什么,看是否符合规则,因此可以用一个变量标识前面字符状态
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】