算法学习3

注意:刷题和笔试的时候一般没法用np,pd,因为其他语言没有

数组

leetcode

283、移动零                              双指针:一个遍历数组,另一个指向位置

485、最大连续1的个数              双指针 

26、删除有序数组中的重复项    双指针 

80、删除有序数组中的重复项2  双指针 

1184、公交站间的距离

27、移除元素                             双指针

289、生命游戏                           除了0和1,多用几个数字来记录状态,如2,3.

冒泡排序:外层是遍历n-1次,内层是比较n-1-i次 冒出大的  for  + for

:每一次比较选择出数组中最大的元素,每一次冒出都要对整个待排序数组进行遍历 

外层的for是指要冒泡几次,n-1次,内层的for是对待排序数组进行遍历比较

简短描述:冒泡排序是一种简单的排序算法,它通过多次遍历待排序列表,比较相邻元素并交换它们,使得最大的元素逐渐移动到列表末尾

插入排序:后面的元素和前面的元素比较   升序  for +  while  插入位置和边界条件注意

:首先将数组的第一个元素看做是包含1个元素的已排序数组

接着,按顺序把待排序数组中的元素插入到已排序数组的正确位置

外层的for 是遍历待排序数组,内层的while是将元素插入到已排序数组的正确位置

简短描述插入排序是一种简单直观的排序算法,它通过构建有序序列,不断将未排序元素插入已排序部分的适当位置,最终完成整个列表的排序

选择排序:从待排序序列中选出最小的元素,存放到已排序序列末尾

  也是 for + for 循环, 外层是n-1次选择,内层是在第i次选择中找出待排序数组中最小元素的下标,不断的和外层的元素比较  1 和n-1个中(从第2到最后一个)最小的比较 交互 ,2 和 n-2个中(从第3到最后一个)最小的比较 交互 

简短描述:选择排序是一种简单的排序算法,它通过多次遍历待排序列表,每次选择最小(或最大)的元素放置在已排序部分的末尾,逐步完成整个列表的排序

一般笔试第一题是简单的,有时候要找规律或者运用数学公式或者两者结合起来

注意:尽量要在循环里用sum函数,复杂度太高了!!!

尽量在外面一次性的sum,然后再在sum上更改

答:保存了数组的sum,在此基础上进行遍历,没有在遍历中进行sum,降低了时间复杂度。

体现了用空间换时间的思想

总结:

模拟题:找规律

数组题:双指针用法(原地修改),空间换时间(sum保存起来),可以用多种状态记录(生命游戏,原地修改只能原地修改,任何非原地都会报错)

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值