难以参透
_Wulablabla
这个作者很懒,什么都没留下…
展开
-
Leetcode14. 最长公共前缀
题目详情 解题思路 每次只遍历每个元素的一位字符。直到所有字符不一样为止。原创 2020-05-17 11:39:08 · 75 阅读 · 0 评论 -
Leetcode 239. 滑动窗口最大值
题目详情 算法描述 (暴力法) 可以 但是超出时间限制 (动态规划) (双向队列) 解题思路 (C#) (动态规划) class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int n = nums.length; if (n * k == 0) return new int[0]; if (k == 1) return nums; int [] left = new int[n];原创 2020-06-29 20:21:49 · 108 阅读 · 0 评论 -
Leetcode 210. 课程表II
题目描述 代码实现 (C#)原创 2020-06-28 11:09:14 · 71 阅读 · 0 评论 -
Leetcode207. 课程表
题目详情 解题思路 代码实现 (C#) public class Solution { public bool CanFinish(int numCourses, int[][] prerequisites) { //这道题邻接表用List<List<int>>表示 eg.{{2,3},{1,3},{1,2}}表示第一个结点通往2和3 第二个结点通往1和3 第三个结点通往1和2 //入度表用一维数组表示 位置代表结点位置 每位的值代原创 2020-06-27 21:59:15 · 155 阅读 · 0 评论 -
Leetcode236. 二叉树附近的公共祖先
public class Solution { public TreeNode res; public TreeNode LowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { IsAncestor(root, p, q); return res; ...原创 2020-05-07 22:52:56 · 78 阅读 · 0 评论 -
Leetcode 78.子集
题目描述 解题思路 方法三:字典排序(二进制排序) 子集 思路 该方法思路来自于 Donald E. Knuth。 将每个子集映射到长度为 n 的位掩码中,其中第 i 位掩码 nums[i] 为 1,表示第 i 个元素在子集中;如果第 i 位掩码 nums[i] 为 0,表示第 i 个元素不在子集中。 例如,位掩码 0…00(全 0)表示空子集,位掩码 1…11(全 1)表示输入数组 nums。 因此要生成所有子集,只需要生成从 0…00 到 1…11 的所有 n 位掩码。 乍看起来生成二进制数很简单原创 2020-06-23 12:01:52 · 128 阅读 · 0 评论 -
Leetcode 641. 设计循环双端队列
class MyCircularDeque { public: /** Initialize your data structure here. Set the size of the deque to be k. */ MyCircularDeque(int k) { m_head = 0; m_tail = 0; m_size ...原创 2020-03-30 19:59:17 · 147 阅读 · 0 评论 -
Leetcode7. 整数反转
题目详情 解题思路 要注意的一点是 反转过来的数字溢出的可能 (如何判断) 溢出条件有两个,一个是大于整数最大值MAX_VALUE,另一个是小于整数最小值MIN_VALUE,设当前计算结果为ans,下一位为pop。 从ans * 10 + pop > MAX_VALUE这个溢出条件来看 当出现 ans > MAX_VALUE / 10 且 还有pop需要添加 时,则一定溢出 当出现 ans == MAX_VALUE / 10 且 pop > 7 时,则一定溢出,7是2^31 - 1的个原创 2020-05-17 11:03:18 · 75 阅读 · 0 评论 -
Leetcode 155.最小栈
class MinStack: def __init__(self): self.data = [] self.helper = [] def push(self, x): self.data.append(x) if len(self.helper) == 0 or x <= self.helper[-1...原创 2020-03-23 17:40:34 · 66 阅读 · 0 评论 -
Leetcode 20. 有效的括号
class Solution: def isValid(self, s: str) -> bool: dic = {'{': '}', '[': ']', '(': ')', '?': '?'} stack = ['?'] for c in s: if c in dic: stack.append(c) ...原创 2020-03-23 17:43:44 · 86 阅读 · 0 评论 -
Leetcode122. 买卖股票的最佳时机II
题目描述 解题思路 (贪心法) 只要后天价格大于前天,都把差价算入利润中。 (动态规划法) 未参透 代码实现 (C#) public class Solution { public int MaxProfit(int[] prices) { int val; int i; int res=0; for(i=0;i<prices.Length-1;i++) { val=prices[i+1]-price原创 2020-05-13 20:35:19 · 88 阅读 · 0 评论 -
Leetcode 21.——合并两个有序链表
题目详情 class Solution: def mergeTwoLists(self, l1, l2): if l1 is None: return l2 elif l2 is None: return l1 elif l1.val < l2.val: l1.n...原创 2020-03-16 18:12:56 · 81 阅读 · 0 评论 -
Leetcode 83.——删除排序链表中的重复元素
题目详情 class Solution(object): def deleteDuplicates(self, head): """ :type head: ListNode :rtype: ListNode """ if not (head and head.next): return head i,j = head,head while j: ...原创 2020-03-16 18:11:14 · 91 阅读 · 0 评论 -
Leetcode —141.环形链表
题目详情 public boolean hasCycle(ListNode head) { Set<ListNode> nodesSeen = new HashSet<>(); while (head != null) { if (nodesSeen.contains(head)) { return true; ...原创 2020-03-16 18:08:07 · 87 阅读 · 0 评论 -
LeetCode 88.合并两个有序数组
题目详情 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 ...原创 2020-03-02 20:04:38 · 156 阅读 · 0 评论