算法学习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
    评论
Python算法学习是指掌握使用Python语言来解决各种问题的方法和技巧。在学习过程中,有几个重要的方面需要注意。 首先,了解基本的算法概念是必不可少的。例如,了解常见的排序算法(如冒泡排序、快速排序)和查找算法(如二分查找)等。这有助于我们理解算法的原理和思想。 其次,学习Python中的内置数据结构和函数,如列表、字典和字符串等。熟悉这些数据结构和函数的使用方法,可以帮助我们更好地解决问题,并编写出高效的算法。 第三,了解常用的算法设计技巧。例如,贪心算法、动态规划和分治法等。这些算法设计技巧可以应用于不同类型的问题,帮助我们找到解决问题的最佳方法。 第四,编写和调试算法代码是学习过程中的关键步骤。我们可以通过编写小型的算法程序来练习和巩固所学的知识。同时,调试是解决代码错误和优化算法的重要环节,需要耐心和细心。 最后,不断练习和实践是提高算法能力的关键。我们可以通过刷题、参加编程比赛和项目实践等方式来提高自己的算法水平。与其他程序员交流和分享经验也是相互学习的好机会。 总之,Python算法学习是一个渐进的过程,需要不断学习、实践和提高。通过合理的学习方法和坚持不懈的努力,我们可以不断提高自己的算法能力,并运用它来解决实际问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值