随笔分类 -  算法

《算法设计与分析》课程每章学习总结
摘要:一、应用场景 通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置。以空间换时间,复杂度为O(n)。 二、思路 (1)单调栈里面放的是元素下标i(比较的时候用num[i]获取) (2)单调栈里面元素的顺序:求右边第一大时为从栈顶到栈底递增,右边第一小为递减 (3)具体情况: 阅读全文
posted @ 2022-09-18 16:29 陈雪佩 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一、思路 使用二分查找的前提是数组是有序的,思路是把整个数组根据中点一分为二,如果target小于中点,则将搜索目标缩小为左半部分再继续搜索,否则搜索目标缩小为右半部分,直到找到中点为target返回。 二、解题模板 int binarySearch(int[] nums, int target) 阅读全文
posted @ 2022-09-03 23:49 陈雪佩 阅读(24) 评论(0) 推荐(0) 编辑
摘要:一、定义双指针技巧主要分为两类:左右指针和快慢指针。所谓左右指针,就是两个指针相向而行或者相背而行;而所谓快慢指针,就是两个指针同向而行,一快一慢。只要数组是有序的,或者是需要原地操作数组,都应该想到双指针技巧。 二、快慢指针通常用于在有序数组/链表中去重,或者是对数组中的某些元素原地修改。1、有序 阅读全文
posted @ 2022-09-03 23:31 陈雪佩 阅读(228) 评论(0) 推荐(0) 编辑
摘要:一、你对回溯算法的理解 1、定义:回溯法是一种按深度优先的选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新搜索。 2、本质:回溯法本质上就是一种暴力穷举算法,对一个N叉树进行遍历,在前序位置(进入节点时)做出当前选择,然后开始递归,最后在 阅读全文
posted @ 2020-12-16 23:03 陈雪佩 阅读(359) 评论(0) 推荐(0) 编辑
摘要:一、对贪心算法的理解 贪心算法是通过一系列选择来得到问题的解,并不从整体最优的角度考虑,所做的选择只是在某种意义上的局部最优选择,因此贪心算法并不能解决所有所有的问题。 用贪心算法来解决的问题有两个性质: 1、贪心选择性质:所求问题的整体最优解可以通过一系列局部最优的选择。 2、最优子结构性质:一个 阅读全文
posted @ 2020-11-14 11:42 陈雪佩 阅读(179) 评论(0) 推荐(0) 编辑
摘要:一、动态规划思想 动态规划的方法有两种,一种是带备忘录的递归,一种是递推求解。递推求解是先自顶向下再自底向上求解,而带备忘录递归则只有自底向上,其效率会更高。 动态规划算法其实就是填表的过程,在填表的过程中不断的比较与择优。 动态规划算法其基本思想也是将原问题分解成若干个子问题,通过求解子问题得到原 阅读全文
posted @ 2020-10-31 18:56 陈雪佩 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题目: 最大子列和问题 问题描述: 给定K个整数组成的序列{ N​1​​, N​2​​, ..., N​K​​ },“连续子列”被定义为{ N​i​​, N​i+1​​, ..., N​j​​ },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 1 阅读全文
posted @ 2020-10-11 22:26 陈雪佩 阅读(126) 评论(0) 推荐(0) 编辑
摘要:1、分治法思想的体会 分治法的思想是划分子问题、求解子问题和合并子问题。将规模较大的问题划分成若干个规模较小的且与原问题相同的子问题后,对每个子问题递归求解并合并。 该方法适用于规模缩小到一定程度就能容易解决的问题,并且划分的子问题是相同问题。 我认为该方法的难点在于如何确定问题的最小规模,即写出退 阅读全文
posted @ 2020-10-01 11:31 陈雪佩 阅读(134) 评论(0) 推荐(0) 编辑
摘要:1、本学期将遵循的编码规范是谷歌公司的编码规范,链接为 https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/ 2、 算法是软件的核心,如何设计好算法在软件开发中显得至关重要。那么,什么是好的算法呢?《 阅读全文
posted @ 2020-09-19 15:16 陈雪佩 阅读(114) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示