DUT_LYH

程序猿成长日记

leetcode 113. 路径总和 II

递归到叶子才将tans推进去ret ret.push_back(tans); class Solution { public: vector<vector<int>> pathSum(TreeNode* root, int sum) ...

2019-04-29 09:12:53

阅读数 43

评论数 0

leetcode 120. 三角形最小路径和 O(1)额外空间

将方块时候的最小路径改成了三角将triangle直接改成dp数组不用开额外空间 triangle[i][j] += min(triangle[i-1][j],triangle[i-1][j-1]); 每一行去掉首位位置 首位和尾位就一条路径 triangle[i][0] += triangle[i...

2019-04-29 08:57:35

阅读数 31

评论数 0

例会笔记(5) 位运算&STL

位操作是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。 (Wikipedia) 分类 & 按位与 如果两个相应的二进制...

2019-04-25 09:35:38

阅读数 109

评论数 0

leetcode 124. 二叉树中的最大路径和

递归 用一个全局的 maxret 记录最后的返回值,不断跟新最大值 计算每一个结点向下延伸的最大和路径,作为递归的返回值 由于每次计算该节点的时候需要计算左子树和右子树的最大,所以就可以直接计算该点连接左右子数的最大路径和,然后去更新maxret 递归从叶子开始往上构造,类似求最大子序列的和,当前...

2019-04-23 20:12:45

阅读数 61

评论数 2

leetcode 442. 数组中重复的数据

巧妙的不开其他空间 用当前数的数值-1的位置的数的正负来记录出现的次数 nums[ abs(nums[i])-1 ] = -nums[ abs(nums[i])-1 ] class Solution { public: vector<int> findDupli...

2019-04-22 10:02:47

阅读数 33

评论数 0

leetcode 96. 不同的二叉搜索树

递归 n个结点轮流做根节点,然后左右进行递归,两个结果做乘法 发现20个就超int,打表只需要到19 #include <iostream> #include <vector> using namespace std; class Solu...

2019-04-21 20:27:27

阅读数 61

评论数 0

leetcode 2. 两数相加

递归 四种情况 l1 && l2 只有 l1 不空 只有 l2 不空 都没有 递归结束 同时要分别考虑进位 这样就是八种情况 class Solution { public: ListNode* addTwoNumbers(ListNode* l1, Lis...

2019-04-20 17:58:48

阅读数 45

评论数 0

leetcode 371. 两整数之和 机组二进制加法

https://leetcode-cn.com/problems/sum-of-two-integers/comments/ 两数直接异或是无进位的加法器 得到A 两数直接做与操作是得到各个位的进位B 将A与B的二倍(左移一位 因为进位是要和前一位相加)再进行这样操作,直到进位为0 class S...

2019-04-20 17:15:31

阅读数 30

评论数 0

leetcode 155. 最小栈 单调栈

一个正常的栈,一个最小栈栈顶是当前栈的最小元素 push的时候 如果push的x比最小栈顶的小就push x 否则吧栈顶再push一遍 #include <iostream> #include <stack> using namespace ...

2019-04-18 21:04:29

阅读数 33

评论数 0

leetcode 357. 计算各个位数不同的数字个数

排列组合之后打表 以3位数为例所有的减去以0开头的 A103−A92 A_{10}^{3}-A_{9}^{2} A103​−A92​ #include <iostream> #include <map> #include <ma...

2019-04-18 20:18:10

阅读数 30

评论数 0

leetcode 372. 超级次方 欧拉降幂

快速幂超时 因为要转二进制 typedef long long LL; class Solution { public: vector<int> chu2(vector<int>& b){ int ...

2019-04-18 09:39:01

阅读数 89

评论数 0

C++ stl 容器 复杂度

https://www.cnblogs.com/LloydDracarys/articles/8872804.html map, set, multimap, and multiset 上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为: 插入: O(logN) 查看...

2019-04-17 21:31:32

阅读数 39

评论数 0

leetcode 137. 只出现一次的数字 II 位运算

对每一位单独统计出现1的次数, 如果出现的次数不能整除3说明唯一存在的数在这一位上为1, 时间复杂度O(32N) #include <iostream> #include <vector> using namespace std; class...

2019-04-17 21:03:08

阅读数 23

评论数 0

leetcode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复 map

用一个map记录每一个元素出现的次数就可以 然后弄一个int记录总时间 这样 插入和删除的时候就将对应数字的mp值改掉就可以 但是获取随机元素就不是O(1)了 但是小于O(n) class RandomizedCollection { public: map<int ,int...

2019-04-17 19:38:27

阅读数 53

评论数 0

leetcode 300. 最长上升子序列

可以不连续 严格单调 dp dp[i] 表示 以nums[i] 结尾的最长上升子序列 转移 用i前面的dp更新当前的dp for(int i=1;i<nums.size();i++){ for(int j=i-1;j>=0;j--){ if(nums[i...

2019-04-17 10:08:22

阅读数 45

评论数 0

Dijkstra算法大连理工大学数据结构上机第四章

//Dijkstra算法 #include <iostream> #include <queue> using namespace std; template<class EdgeType> class E...

2019-04-17 08:01:27

阅读数 40474

评论数 0

Dijkstra算法大连理工大学数据结构上机第四章

#include <iostream> #include <queue> using namespace std; template<class EdgeType> class Edge { public:...

2019-04-16 19:07:07

阅读数 75

评论数 0

leetcode 84. 柱状图中最大的矩形 单调栈O(N)

就是找以当前位置为最小值的最大延展区间 暴力O(n^3)超时 大多数的样例是过了的 class Solution { public: int largestRectangleArea(vector<int>& heights) { ...

2019-04-16 19:05:56

阅读数 77

评论数 0

leetcode 72. 编辑距离 dp

状态转移 dp[i][j] 表示长为i的word1 变为长为j的word2的最小次数 if( word1[i-1]== word2[j-1] ){ dp[i][j] = dp[i-1][j-1]; }else{ dp[i][j] = min( dp[i-1][j]+1 , min( 1+d...

2019-04-16 18:42:27

阅读数 16

评论数 0

leetcode 240. 搜索二维矩阵 II

#include <iostream> #include <vector> using namespace std; #define debug(x) cout<<#x<<":...

2019-04-16 18:15:14

阅读数 9

评论数 0

提示
确定要删除当前文章?
取消 删除