美文网首页
2020-02-19刷题笔记

2020-02-19刷题笔记

作者: 爱叫啥叫啥去 | 来源:发表于2020-02-21 19:36 被阅读0次

原地算法

一句话总结就是: 原地算法不依赖额外的资源或者依赖少数的额外资源,仅依靠输出来覆盖输入的一种算法操作。

维基百科中的伪代码示例:

假设要将具有 n 项内容的数组 a 翻转过来。一种看似简单的方法是创建一个大小相等的新数组,用适当的顺序填充副本,然后再删除:

function reverse(a[0..n-1])

    allocate b[0..n-1]  # 额外设定一个数组

    for i from 0 to n-1 # 从 0 到 n-1 遍历数组 a

        b[n -1 - i] := a[i]

    return b

这种方法虽然简单,但是需要 O(n) 的额外空间以使数组 a 和 b 同时可用。此外,分配存储空间和释放存储空间通常是缓慢的操作。如果我们不再需要数组 a 的话,可使用原地算法,用它自己翻转的内容来覆盖掉原先的内容。这样,无论数组有多大,它都只需要辅助变量 i 和 tmp:

function reverse_in_place(a[0..n-1])

       for i from 0 to floor((n-2)/2)

              tmp:=a[i]

              a[i]:=a[n −1− i]

              a[n −1− i]:=tmp

这样既节省了存储器空间又加快了运算速度。

原地算法的python实现

题目:移除元素

我的做法:for循环正序编译错误,原因是正向的话如果后面那个数字和前面已删除的数字相同,后面数字的索引会变成之前已删除数字的索引,但是正在遍历的索引已经检查过这个索引了,会过掉,倒着就不会有覆盖现象了。

相关文章

  • 2020-02-19刷题笔记

    原地算法 一句话总结就是: 原地算法不依赖额外的资源或者依赖少数的额外资源,仅依靠输出来覆盖输入的一种算法操作。 ...

  • 晨间日记

    计算机刷题 看书写笔记 高数刷题 英语刷题 奋斗到天亮,加油奥利给

  • 谷歌工程师为金三银四筹备1000道Leetcode刷题笔记

    对于刷题相关的文章,在之前我也推荐过不少,今天再给大家推荐一份算法刷题笔记,这份笔记与以往的刷题有所区别,作者把 ...

  • 刷题笔记

    算法思想 一、二分查找 1. 算法思想 算法详解 算法细节 一定要看二分查找细节.md 实现时需要注意以下细节: ...

  • 刷题笔记

    最近在准备面试,发现自己真的菜的不行,就计划接下来的时间把 leetcode 上面刷的 中等题 和 每日一题做个简...

  • 刷题笔记

    题目描述 343 - Integer BreakGiven a positive integer n, break...

  • 抓住小尾巴

    最近忙着刷题,感觉效率不是很高,白天看录播视频做笔记,晚上刷题。参加了一个集训营,只要每天刷完固定的题量,达到了七...

  • 字节总监首发1121道LeetCode算法刷题笔记(含答案)

    关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题...

  • 字节总监首发1121道LeetCode算法刷题笔记(含答案)

    关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题...

  • 看完谷歌大佬的Leetcode刷题笔记,我直接手撕了200道Le

    关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题...

网友评论

      本文标题:2020-02-19刷题笔记

      本文链接:https://www.haomeiwen.com/subject/lcrafhtx.html