数据结构
数据结构
可峰科技
1-不要试图去证明自己比别人能力强,
是因为不自信的人才去证明自己的能力,
大家要记住,
就是你在团队不要找同样的人,
团队应该找不同样的人,
就是你把自己的能力放下,
你是要有一种新的能力 把大家团结起来,
赋能别人的能力,
唯一的办法,
这帮聪明的人没有办法一起工作,
但是我在 就可以让他们一起工作,
这是一个强大的Leadership能力。
2-读书读的好的人,很少会想到去创业,而读书读的差的人,没人要他,他容易去创业,
所以不管你会读书不会读书,你有资源没有资源,机会都有,天生我材必有用,
你今天去想清楚,这世界成功的不是一条路,有很多的路
3-学些经济知识
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构之贪心算法
以下内容为作者高畅所有 2.1 算法解释 顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最 后得到的结果是全局最优的。 举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹 果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的 贪心策略为,每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全 局结果是局部结果的简单求和,且局部结果互不相干,因此局部最优的策略也同样是全局最优的 策略。 2.2 分配原创 2021-08-23 22:31:22 · 270 阅读 · 0 评论 -
STL中常用的数据结构
1- Sequence Containers:维持顺序的容器。 2- 类型 名称 随机读取 排序数组 插入任意值 获得最大值 删除最大值 备注 vector 动态数组 O(1) 因为在尾部增删的复杂度是 O(1),我们也可以把它当作 stack 来用 list 双向链表 可以当作 stack 和 queue 来使用,链表不支持快速随机读取,因此我们很少用到这个数据结构。一个例外是经典的 LRU 问题,我们需要利用链表的特性来解决 deque 双端队列 O(1) 又支原创 2021-08-19 21:48:01 · 1060 阅读 · 0 评论 -
广度优先搜索之2个岛屿之间的最短距离
感觉还是深度优先搜索啊,这里使用队列实现 注意事项,循环后的变量不要重复遍历。 #include <iostream> #include <algorithm> #include <vector> #include <stack> #include <deque> using namespace std; vector<int> direction{-1, 0, 1, 0, -1}; void dfs(std::vector<原创 2021-06-07 22:33:59 · 724 阅读 · 0 评论 -
回溯法之排列组合
实例数据 {1,2,3} 实现方式,巧妙的使用swap交换vector中2个数字的位置,然后在递归中循环更新每个位置的数字,就可以实现全排列 代码如下 void backTracing(std::vector<int> &data, int level, std::vector<std::vector<int>> all_arrray) { if (level == data.size() - 1) { all_arrray.pus原创 2021-06-07 10:51:22 · 152 阅读 · 0 评论 -
最大岛屿之深度优先搜索(dfs)
解题思路:使用栈压入弹出,或者使用递归实现 技巧点:自定义搜索方向,使用vector direction{-1, 0, 1, 0, -1}; 数据实例 std::vector<std::vector<int>> grid = {{1, 0, 0, 1, 0, 1, 0, 0}, {1, 0, 0, 1, 0, 1, 1, 1},原创 2021-06-05 19:03:58 · 206 阅读 · 0 评论 -
STL基本概念
1-各种STL容器的使用场景 2-C++中STL用法超详细总结原创 2021-02-20 15:01:04 · 174 阅读 · 0 评论 -
排序算法
个人总结,常见的排序算法有 1-快速排序 2-归并排序 3-插入排序 4-冒泡排序 5-选择排序 感觉归并排序利用递归来实现还有些特色,其他感觉就是冒泡的变种,实际使用时直接调用标准库std的算法即可。 下面是归并排序的自己画的原理图 ...原创 2021-01-24 12:34:17 · 126 阅读 · 0 评论 -
旋转数组查找数字
排好序并旋转的数组,可以利用排好序的规律使用二分法进行查找原创 2021-01-09 15:13:41 · 237 阅读 · 0 评论 -
自己实现C++里的lower_bound和upper_bound函数
int lower_bound(vector<int> &nums, int target) { int l = 0, r = nums.size(), mid; while (l < r) { mid = (l + r) / 2; if (nums[mid] >= target) { r = mid; } else { l = mid + 1; } } return l; } int upper_bound(vector<int> &nums, int原创 2021-01-07 21:18:40 · 752 阅读 · 0 评论 -
龟兔赛跑(快慢指针)打卡
不说了,巴拉巴拉见图原创 2020-12-30 22:21:16 · 161 阅读 · 0 评论 -
力扣127-单词接龙
参考文章 https://leetcode-cn.com/problems/word-ladder/solution/cpp-yi-ge-si-lu-de-zhuan-bian-cong-1156msjia-su-da/ 双向BFS为什么比单项BFS快,这里我们把双向分为前向和后向,在最坏复杂度下,随着传递的推进,前向传递会越來越复杂,速度越来越慢,这时我们根据有用信息或者叫先验(有先验干嘛不用,这里指endword)来降低前向传递的复杂程度,所以可以缩短前向的匹配的时间,从而实现整体优化的效果。 举个不一原创 2020-08-21 18:47:08 · 245 阅读 · 0 评论 -
力扣322-零钱兑换
参考网址 https://leetcode-cn.com/problems/coin-change/solution/322-ling-qian-dui-huan-by-leetcode-solution/ 动态规划方程,一步一步展开,用递归的思路,还要锻炼。原创 2020-08-21 16:40:35 · 295 阅读 · 0 评论 -
力扣300-最长上升子序列
参考文章 https://leetcode-cn.com/problems/longest-increasing-subsequence/solution/dong-tai-gui-hua-er-fen-cha-zhao-tan-xin-suan-fa-p/原创 2020-08-21 15:58:44 · 178 阅读 · 0 评论 -
力扣279-完全平方数
参考文章 https://leetcode-cn.com/problems/perfect-squares/solution/chao-zhi-bai-kao-zui-jiang-xiao-xue-sheng-du-neng-/ 小学生易懂版本。原创 2020-08-21 15:15:46 · 267 阅读 · 0 评论 -
力扣198-打家劫舍
参考网址 https://leetcode-cn.com/problems/house-robber/solution/da-jia-jie-she-by-leetcode-solution/ 转移方程是关键,想到为什么会这样?原创 2020-08-21 14:33:29 · 236 阅读 · 0 评论 -
力扣128-最长连续序列
参考网址 https://leetcode-cn.com/problems/longest-consecutive-sequence/solution/zui-chang-lian-xu-xu-lie-by-leetcode-solution/ 这题不难。原创 2020-08-21 14:19:14 · 289 阅读 · 0 评论 -
力扣395-至少有K个重复字符的最长子串
参考文章 https://leetcode-cn.com/problems/longest-substring-with-at-least-k-repeating-characters/solution/duo-lu-fen-zhi-de-di-gui-fang-fa-zhi-xing-he-nei-c/ 发现慢慢对递归有个感觉,就相同功能的函数,重复调用。原创 2020-08-21 13:45:31 · 230 阅读 · 0 评论 -
力扣315-计算右侧小于当前元素的个数
参考文章 https://leetcode-cn.com/problems/count-of-smaller-numbers-after-self/solution/shu-zhuang-shu-zu-de-xiang-xi-fen-xi-by-yangbingji/ 这个真是算法,不是吹!原创 2020-08-21 13:14:17 · 339 阅读 · 0 评论 -
力扣162-寻找峰值
参考文章 https://leetcode-cn.com/problems/find-peak-element/solution/xun-zhao-feng-zhi-by-leetcode/原创 2020-08-21 10:16:03 · 229 阅读 · 0 评论 -
力扣324-摆动排序
参考文章 https://leetcode-cn.com/problems/wiggle-sort-ii/solution/yi-bu-yi-bu-jiang-shi-jian-fu-za-du-cong-onlognjia/原创 2020-08-21 09:42:57 · 249 阅读 · 0 评论 -
力扣239-滑动窗口最大值
参考网址 https://leetcode-cn.com/problems/sliding-window-maximum/solution/shuang-xiang-dui-lie-jie-jue-hua-dong-chuang-kou-z/ 使用一个双向队列deque,让该队列的头是队列中最大的元素,然后向后【滑】就可以了。原创 2020-08-20 17:43:40 · 306 阅读 · 0 评论 -
力扣380-常数时间插入、删除和获取随机元素
参考文章 https://leetcode-cn.com/problems/insert-delete-getrandom-o1/solution/fen-xiang-yi-ge-you-xiu-de-suan-fa-hashsethe-shu-z/ 此题的正确解法是利用到了一个一维数组和一个 HashMap,其中数组用来保存数字,HashMap 用来建立每个数字和其在数组中的位置之间的映射。 ...原创 2020-08-20 15:44:48 · 238 阅读 · 0 评论 -
力扣454-四数相加
参考文章 https://leetcode-cn.com/problems/4sum-ii/solution/454-si-shu-xiang-jia-iimapzai-ha-xi-fa-zhong-de-yi/ A和B两个循环相加,放入哈希表中,key为A+B的值,value为频率,然后C和D两个循环相加,检测AB的哈希表中是否有C和D相加的元素的相反数。 ...原创 2020-08-20 15:32:49 · 252 阅读 · 0 评论 -
力扣171-Excel表列序号
参考文章 https://leetcode-cn.com/problems/excel-sheet-column-number/solution/c-0ms-by-epecker/ 其实没有用到哈希表。原创 2020-08-20 15:12:38 · 244 阅读 · 0 评论 -
力扣341-扁平化嵌套列表迭代器
参考文章 https://leetcode-cn.com/problems/flatten-nested-list-iterator/solution/c-zong-he-ge-lu-da-lao-de-da-an-by-fxxuuu/ 其实用vector解决这个问题更直观一些,用栈的话要反向压栈,因为这里要使用next和hasnext。首先解析字符串,然后压栈就可以了。 ...原创 2020-08-20 15:02:10 · 218 阅读 · 0 评论 -
力扣227-基本计算器
参考文章 https://leetcode-cn.com/problems/basic-calculator-ii/solution/chai-jie-fu-za-wen-ti-shi-xian-yi-ge-wan-zheng-ji-/ 思路,加法直接入栈,减法乘以负数入栈,乘除法先计算结果再入栈,最后统一进行加法。原创 2020-08-20 14:35:33 · 565 阅读 · 0 评论 -
力扣150-逆波兰表达式求值
参考网址 https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/solution/ni-bo-lan-biao-da-shi-qiu-zhi-zhan-shi-xian-by-mrw/ 就是使用stack栈,按照规律压进压出就可以了。原创 2020-08-20 14:17:05 · 276 阅读 · 0 评论 -
力扣347-前K个高频元素
参考网址 https://leetcode-cn.com/problems/top-k-frequent-elements/solution/347-qian-kge-gao-pin-yuan-su-cjian-ji-dai-ma-you-x/ 首先哈希表统计频率,然后用最小堆保留频率前K个高频元素。原创 2020-08-20 13:56:42 · 263 阅读 · 0 评论 -
力扣378-有序矩阵中第K小的元素
参考网址 https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/solution/you-xu-ju-zhen-zhong-di-kxiao-de-yuan-su-by-leetco/ 第二种方法使用最小堆来更新最小元素,然后依次堆出和堆进来找到第K个最小元素。 ...原创 2020-08-20 12:30:08 · 231 阅读 · 0 评论 -
力扣295-数据流的中位数
参考文章 https://leetcode-cn.com/problems/find-median-from-data-stream/solution/shu-ju-liu-de-zhong-wei-shu-by-leetcode/ 一般思路:在push的时候进行排序。 或者:用一个最大堆和最小堆来时刻更新堆顶的元素(即中位数) 或者:使用AVL树,用2个指针时刻更新中位数的位置。 ...原创 2020-08-20 11:46:23 · 389 阅读 · 0 评论 -
力扣215-数组中的第K个最大元素
参考网址 https://leetcode-cn.com/problems/kth-largest-element-in-an-array/solution/shu-zu-zhong-de-di-kge-zui-da-yuan-su-by-leetcode-/ 构建大根堆,这是一个知识点,如何进行堆排序 void maxHeapify(vector<int>& a, int i, int heapSize) { int l = i * 2 + 1, r = i *原创 2020-08-19 17:11:07 · 462 阅读 · 0 评论 -
力扣-155:最小栈
参考网址: https://leetcode-cn.com/problems/min-stack/solution/zui-xiao-zhan-by-leetcode-solution/ 栈和队列的合理解释 栈相当于一个水瓶子,往里面放东西,只能被压到底部,所有只有等上面的所有的都出来了,他才能出来,这是先进后出。 队列相当于一个隧道,火车往里面开,不能回头,头先进去当然也先出来,这叫先进先出。 参考:https://zhidao.baidu.com/question/877756137810686092.原创 2020-08-19 15:52:58 · 234 阅读 · 0 评论 -
力扣-328:奇偶链表
参考网址: https://leetcode-cn.com/problems/odd-even-linked-list/solution/shuang-zhi-zhen-qiu-jie-by-tangzixia/ 临时变量tmp的作用是关键,它是偶数链表的头节点,它是奇数链表和偶数链表的结合点。 循环操作:首先使用临时变量tmp保存偶数链表,然后奇数节点指向奇数节点,偶数节点指向偶数节点,最后奇数链表与偶数链表在tmp初合并,同时更新奇数点位置,偶数点位置。---->再开始下一次循环。 ...原创 2020-08-19 15:34:46 · 213 阅读 · 0 评论 -
力扣237-删除链表中的节点
参考网址 https://leetcode-cn.com/problems/delete-node-in-a-linked-list/solution/cjian-ji-dai-ma-2xing-by-orangeman/ 与删除该节点不同,其实是删除了该节点的下一个节点,只是把下一个节点的值复制给要删除的节点。即A->B->C->D,要删除B,结果是把C复制给B,然后删除了C,变成A->B©->D。就变成了A->C->D. ...原创 2020-08-19 13:26:42 · 253 阅读 · 0 评论 -
力扣234-回文链表
参考网址: https://leetcode-cn.com/problems/palindrome-linked-list/solution/hui-wen-lian-biao-1zhan-2kuai-man-zhi-zhen-fan-zhu/ 使用快慢指针找到链表中间的位置,同时翻转前一部分链表,最后将翻转的链表与后半部分的链表进行比较即可。 ...原创 2020-08-19 13:09:15 · 251 阅读 · 0 评论 -
力扣206-反转链表
参考文章 https://leetcode-cn.com/problems/reverse-linked-list/solution/206-fan-zhuan-lian-biao-shuang-zhi-zhen-fa-di-gui-/ 就是翻转指针的方向。要定义一个临时变量保存当前节点,一个反转后的节点,所以还可以写成这样 class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* temp;原创 2020-08-19 12:52:23 · 332 阅读 · 0 评论 -
力扣160-相交链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {原创 2020-08-13 20:26:27 · 233 阅读 · 0 评论 -
力扣148-排序链表
class Solution { public: ListNode* sortList(ListNode* head) { ListNode dummyHead(0); dummyHead.next = head; auto p = head; int length = 0; while (p) { ++length; p = p->next; }原创 2020-08-13 20:03:05 · 201 阅读 · 0 评论 -
力扣1300题
参考文章 https://leetcode-cn.com/problems/decode-string/solution/zi-fu-chuan-jie-ma-by-leetcode-solution/原创 2020-05-28 14:34:35 · 391 阅读 · 0 评论 -
和可被 K 整除的子数组
参考文章:https://leetcode-cn.com/problems/subarray-sums-divisible-by-k/solution/he-ke-bei-k-zheng-chu-de-zi-shu-zu-by-leetcode-sol/原创 2020-05-27 09:54:15 · 352 阅读 · 0 评论
分享