注意:刷题和笔试的时候一般没法用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,降低了时间复杂度。
体现了用空间换时间的思想