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 ]

 

 

 

判断当前字符是不是合法的,就判断前面一个字符是什么,看是否符合规则,因此可以用一个变量标识前面字符状态

 

posted @   呵呵啦  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示