随笔分类 -  leetcode

摘要:Q: 不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: a = -2, b = 3 输出: 1 A: 主要是记录一下加法可以用异或和与替代,异或等价于没有进位机制的加法,与 阅读全文
posted @ 2019-10-25 22:53 NeoZy 阅读(107) 评论(0) 推荐(0)
摘要:Q: 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内 阅读全文
posted @ 2019-10-22 21:35 NeoZy 阅读(96) 评论(0) 推荐(0)
摘要:Q: 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻 阅读全文
posted @ 2019-10-21 17:34 NeoZy 阅读(125) 评论(0) 推荐(0)
摘要:DP class Solution { public: int longestIncreasingPath(vector<vector<int>>& matrix) { if(matrix.size()==0 or matrix[0].size()==0) { return 0; } int m=m 阅读全文
posted @ 2019-10-20 15:01 NeoZy 阅读(145) 评论(0) 推荐(0)
摘要:Q: 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。 说明: 输入可能包含了除 ( 和 ) 以外的字符。 示例 1: 输入: “()())()” 输出: ["()()()", “(())()”] 示例 2: 输入: “(a)())()” 输出: ["(a)()()", “(a() 阅读全文
posted @ 2019-10-20 12:08 NeoZy 阅读(274) 评论(0) 推荐(0)
摘要:Q: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <— / 2 3 <— \ 5 4 <— A: 解法1:常规层次遍历每次取最后一个元素: class 阅读全文
posted @ 2019-10-18 20:33 NeoZy 阅读(135) 评论(0) 推荐(0)
摘要:Q: 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 阅读全文
posted @ 2019-10-16 23:28 NeoZy 阅读(119) 评论(0) 推荐(0)
摘要:Q: 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 示例 2: 输入: [3,1,3,4,2] 输出: 3 说明: 不 阅读全文
posted @ 2019-10-07 16:52 NeoZy 阅读(123) 评论(0) 推荐(0)
摘要:Q: 给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入: “bcabc” 输出: “abc” 示例 2: 输入: “cbacdcbc” 输出: “acdb” A: 自己不会,看的别人思路, 阅读全文
posted @ 2019-10-04 23:53 NeoZy 阅读(489) 评论(0) 推荐(0)
摘要:Q: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5 阅读全文
posted @ 2019-09-15 18:45 NeoZy 阅读(138) 评论(0) 推荐(0)
摘要:Q: 题目描述 评论 (42) 题解(9)New 提交记录 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。 Range Sum Query 2D 上图子矩阵左上角 (row1, col1) = (2, 1) ,右下 阅读全文
posted @ 2019-09-15 00:54 NeoZy 阅读(106) 评论(0) 推荐(0)
摘要:Q: 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 阅读全文
posted @ 2019-09-14 13:57 NeoZy 阅读(103) 评论(0) 推荐(0)
摘要:Q: 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。 示例 1: 输入: [3,2,3] 输出: [3] 示例 2: 输入: [1,1,1,3,3,2,2,2] 输出: [1,2] A: 一个叫摩尔投票 阅读全文
posted @ 2019-09-06 21:48 NeoZy 阅读(113) 评论(0) 推荐(0)
摘要:Q: 给出一个完全二叉树,求出该树的节点个数。 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例: 输入: 1 / 2 3 / \ / 阅读全文
posted @ 2019-09-03 21:28 NeoZy 阅读(114) 评论(0) 推荐(0)
摘要:Q: 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。 示例: 输入: words 阅读全文
posted @ 2019-08-24 12:23 NeoZy 阅读(137) 评论(0) 推荐(0)
摘要:Q: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s = 7, nums = [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组 阅读全文
posted @ 2019-08-23 15:12 NeoZy 阅读(107) 评论(0) 推荐(0)
摘要:Q: 现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。 可能会有多个正确的顺序,你只要返回一种 阅读全文
posted @ 2019-08-18 19:29 NeoZy 阅读(121) 评论(0) 推荐(0)
摘要:Q: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL A: 迭代就不说了,保存当前节点的前继节点循环改变指针指向就行。 我自己先写了个递归的,但看了题解的递归,一比就比下去了。。 我写的递归: class Solution: 阅读全文
posted @ 2019-08-17 21:10 NeoZy 阅读(89) 评论(0) 推荐(0)
摘要:from collections import deque class Solution: def numIslands(self, grid) -> int: m=len(grid) if not m: return 0 n=len(grid[0]) count=0 for i in range( 阅读全文
posted @ 2019-08-17 00:35 NeoZy 阅读(133) 评论(0) 推荐(0)
摘要:Q: 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator = new BSTIterator(root); iterator.next(); // 返回 3 iterator. 阅读全文
posted @ 2019-08-16 19:50 NeoZy 阅读(116) 评论(0) 推荐(0)