推广 热搜:   公司  企业  中国  快速    上海  行业  设备  未来 

python 移除torch

   日期:2025-01-12     移动:http://fabua.ksxb.net/mobile/quote/7431.html


代码随想录:数组理论基础

  1. 数组下标都是从0开始的
  2. 数组内存空间的地址是连续的

实际的内存空间不一定连续。C++是连续的,JAVA不是。对于python来说,有两种实现方式:

  1. 嵌套列表:子列表分散储存,且python的列表是动态对象,可以存储不同类别的元素,并动态调整大小。
  2. numpy多维数组:连续内存块,但numpy的底层实现是C。

代码随想录:二分查找Leetcode:704. 二分查找

了解过二分的思路,直接做,通过报错看到特殊情况,并对特殊情况进行处理,通过了。思路可行,但有2个问题:

  1. 实际笔试无法看报错的例子。
  2. 代码思路不规范,不够通用。

具体代码如下:

二分法前提条件

  • 有序
  • 无重复

复杂度

时间复杂度:O(log n)
空间复杂度:O(1)

解法

根据2种区间定义,有相应解法。比自己探索的解法更规范。

左闭右闭

重点:

  • while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=
  • if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1
左闭右开

(看懂上面的左闭右闭,就能都看懂)
重点:

  • while (left < right),这里使用 < ,因为left == right在区间[left, right)是没有意义的
  • if (nums[middle] > target) right 更新为 middle,因为当前nums[middle]不等于target,去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为middle

代码随想录:35. 搜索插入位置Leetcode:35. 搜索插入位置 使用二分法求解,要注意针对问题处理边界,不能直接照搬。

代码随想录:34. 在排序数组中查找元素的第一个和最后一个位置Leetcode:34. 在排序数组中查找元素的第一个和最后一个位置 我是先搜索任意一个target,然后再向左右分别找边界,不知道是不是复杂度高了?理论上如果全都是target,我从之间找边界,相当于O(n)?

重点思路:分别用二分法找左、右边界。使用二分法解决时,只有left > right,才算结束(而不是找到某个值就结束)。

代码随想录:移除元素Leetcode:27. 移除元素

快慢指针,思路接近,但错误,没找出bug。

暴力求解

两层for循环,一个for循环遍历数组元素 ,第二个for循环更新数组。
时间复杂度:O(n^2)
空间复杂度:O(1)

快慢指针

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
定义快慢指针:

  • 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
  • 慢指针:指向更新 新数组下标的位置

时间复杂度:O(n)
空间复杂度:O(1)

  • 二分法:两种区间的含义
  • 二分法的规范写法、边界处理
  • 快慢指针的边界处理

完成时间:基础内容3h + 拓展内容1h。
心得:之前是紧急备考,刷了约100道Leetcode和40%代码随想录,但感觉基础不牢。果然,第一天的题看似简单,也有思路,但自己做的时候,对具体实现思路还是不够熟悉,细节处理也差点意思。另一方面,也要在脑子里形成对计算复杂度的概念。需要依托这次训练营,沉下心夯实基础。


本文地址:http://fabua.ksxb.net/quote/7431.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号