数据结构与算法
文章平均质量分 95
研究生阶段从基础回顾到算法落地
Frank Kong
这个作者很懒,什么都没留下…
展开
-
【二分汇总】
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4来源:力扣(LeetCode)原创 2023-04-08 11:08:35 · 423 阅读 · 0 评论 -
【算法——动态规划&算法题】
DP(动态规划,dynamic programming).将一个问题拆成几个子问题,分别求解这些子问题,即可推断出大问题的解。概念:无后效性。(严格定义:如果给定某一阶段的状态,则在这一阶段以后过程的发展不受这阶段以前各段状态的影响。) 最优子结构。大问题的最优解可以由小问题的最优解推出,这个性质叫做“最优子结构性质”。 能将大问题拆成几个小问题,且满足无后效性、最优子结构性质...原创 2020-03-11 17:46:26 · 235 阅读 · 0 评论 -
【算法——链表】
中等1.1旋转链表给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL输入: 0->1->2->NULL, k = 4输出: 2->0->1->NUL...原创 2020-03-02 16:50:14 · 155 阅读 · 0 评论 -
【算法——栈、队列】
1.简单2.中等2.1简化路径题目即将绝对路径转化为规范路径。输入:"/../"输出:"/"解释:从根目录向上一级是不可行的,因为根是你可以到达的最高级。输入:"/home//foo/"输出:"/home/foo"解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。输入:"/a/./b/../../c/"输出:"/c"来源:力扣(LeetCode)链接:ht...原创 2020-02-27 17:19:14 · 175 阅读 · 0 评论 -
【算法——数组】
1.简单2.中等2.1盛最多水的容器(双指针)给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。来源:力扣(LeetCode)...原创 2020-02-18 11:13:52 · 318 阅读 · 0 评论 -
【算法——字符串】
1.简单2.中等2.1无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-wi...原创 2020-02-12 21:19:12 · 242 阅读 · 0 评论 -
【4.贪心算法——编程题】
目录1.简单2.中等2.1买卖股票的最佳时机Ⅱ3.困难1.简单2.中等2.1买卖股票的最佳时机Ⅱ给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3...原创 2020-02-12 10:55:07 · 643 阅读 · 0 评论 -
【4.贪心算法】
所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关。)4.1思路建立数学模型来描...原创 2020-02-12 09:57:28 · 342 阅读 · 0 评论 -
【算法——二叉树】
1.简单2.中等2.1验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 ...原创 2020-02-11 20:16:02 · 322 阅读 · 0 评论 -
【3.搜索算法——编程题】
目录1.简单题目1.1平衡二叉树(深度优先搜索)1.2对称二叉树(广度优先搜索)1.3只出现一次的数字(哈希)1.4相同的树(深度优先搜索)1.5 二叉树的最大深度(深度优先搜索)2.中等题目2.1组合总和(回溯算法)2.2组合总和Ⅱ(回溯算法)2.3全排列(回溯算法)2.4全排列问题Ⅱ(回溯算法)2.5有效的数独(哈希)3.困难题目3.1N...原创 2020-02-07 16:41:48 · 1849 阅读 · 0 评论 -
【3.搜索算法】
百度上对于搜素算法的解释如下:搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。现阶段一般有枚举算法、深度优先搜索、广度优先搜索、A*算法、回溯算法、蒙特卡洛树搜索、散列函数等算法。在大规模实验环境中,通常通过在搜索前,根据条件降低搜索规模;根据问题的约束条件进行剪枝;利用搜索过程中的中间解,避免重复计算这几种方法进行优化。重点学习...原创 2020-02-07 16:34:29 · 552 阅读 · 0 评论 -
【2.排序算法——编程题】
题目一般从leedcode摘抄来,从简单到复杂目录1.简单题目1.1有效的字母异位词1.2两个数组的交集1.3按奇偶排序数组Ⅱ2.中等题目2.1三数之和&四数之和1.简单题目1.1有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagar...原创 2020-02-06 16:09:33 · 637 阅读 · 0 评论 -
【C++ STL 容器】
为方便编程,学习STL中的几大容器:vector/set/map/stack/queue ,算法:sort(),迭代器C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结...原创 2020-02-04 19:09:58 · 209 阅读 · 0 评论 -
【2.排序算法】
排序是算法中的基础,比C高级的语言一般都可调用其自带的库函数来实现,不过掌握其实现过程是必备的。排序一般可以分为以下几类:冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序以上排序算法的时间复杂度、空间复杂度等如下:排序算法——编程题;链接https://blog.csdn.net/kh971024/article/d...原创 2020-02-01 12:50:03 · 307 阅读 · 0 评论 -
【1.数据结构和算法学习目录】
本专栏记录研究生期间算法学习过程,从基础回顾到算法落地。算法学习范围为蓝桥杯官网提供的命题范围:计算机算法:枚举、排序、搜索、计数、贪心、动态规划、图论、数论、博弈论*、概率论*、计算几何*、字符串算法等。数据结构:数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树、复杂数据结构*、嵌套数据结构*等。数据结构是本科必修课,不需要再从头开始复习。需掌握:数据结构的八大分类...原创 2020-02-01 11:10:38 · 666 阅读 · 0 评论