DUT_LYH

程序猿成长日记

leetcode 141. 环形链表

哈希 class Solution { public: bool hasCycle(ListNode *head) { map<ListNode *,int> mp; while(head){ if(mp[...

2019-08-14 23:41:11

阅读数 9

评论数 0

leetcode 718. 最长重复子数组

https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/ dp 状态转移方程 dp[i][j] = dp[i-1][j-1] + 1, A[i-1] == B[j-1] 0 ...

2019-07-08 22:15:24

阅读数 20

评论数 0

leetcode 274. H指数

概念重要评价学者学术权威常用的H指数 倒序排列,找到第i个数的值小于i 返回i-1,循环结束若没有 返回 i #include <iostream> #include <vector> #include <algorithm&a...

2019-05-07 15:27:22

阅读数 51

评论数 1

leetcode 115. 不同的子序列

递归超时 唉 #include <iostream> #include <string> #include <vector> using namespace std; #define debug(x) cout&a...

2019-05-05 20:46:28

阅读数 41

评论数 0

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

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

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

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

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