- 博客(23)
- 收藏
- 关注
原创 课程表 II
题目描述 现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。 可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。 运行实例 示例 1: 输入: 2, [[1,0]] 输出: [0,1] 解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺
2020-05-17 16:18:36 180
原创 课程表
题目描述 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习? 运行实例 示例 1: 输入: 2, [[1,0]] 输出: true 解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。 示例 2: 输入: 2, [[1,0],[0,1]] 输出:
2020-05-17 12:05:28 361
原创 对称二叉树
题目描述 给定一个二叉树,检查它是否是镜像对称的。 运行示例 二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 [1,2,2,null,3,null,3] 不是镜像对称的: 1 / \ 2 2 \ \ 3 3 大...
2020-04-24 21:35:51 127
原创 子集
题目描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 运行示例 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 大体思路 一位一位的往上叠加,比如对于题目中给的例子[1,2,3]来说,最开始是空集,那么我们现在要处理1,就在空集上加1,为[1],现在...
2020-04-18 18:23:59 142
原创 只出现一次的数字 II
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 运行示例 输入: [2,2,3,2] 输出: 3 输入: [0,1,0,1,0,1,99] 输出: 99 大体思路 (大佬的思路,日后可以用来回顾) 如果能设计一个状态转换电路,使得一个数出现3次时能自动抵消为0,最后剩下的就是只出现1次的数。 开始设计:一个二进制位只能表示0或者1...
2020-04-18 11:28:12 201
原创 只出现一次的数字
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 运行示例 输入: [2,2,1] 输出: 1 输入: [4,1,2,1,2] 输出: 4 大体思路 异或 ^按位与 两数相同为0,不同为1 一个数与自己异或会变成0 任何数和0异或不变 异或满足结合律 如 5^2 ^3 ^2 = 2 ^ 2 ^ 5 ^3 所以,将所有数字异或,如果一个...
2020-04-09 23:34:24 86
原创 无重复字符的最长子串
题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 运行示例 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 大体思路 我不行了…我写不出来,当最长子串在末尾时检测不到(T-T) 代码实现 class Solution...
2020-04-09 22:45:20 79
原创 反转字符串
题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 运行示例 输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”] 大体思路 从前往后第...
2020-04-05 14:33:28 89
原创 最长公共前缀
题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 运行示例 输入: [“flower”,“flow”,“flight”] 输出: “fl” 输入: [“dog”,“racecar”,“car”] 输出: “” 大体思路 当元素个数为0时返回“” 当元素个数为1时返回该元素 元素个数大于1时,将第一个元素与第二个比较,得到公共部分 将得到的公共部分...
2020-04-05 14:07:35 81
原创 整数反转
题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 运行示例 输入: 123 输出: 321 输入: -123 输出: -321 输入: 120 输出: 21 大体思路 设a为反转之后的结果(初始值为0),m为x的最后一位数 当x值不为0时,依次取最后一位数m,并去掉末位 a = a * 10 + m得到反转数 其数值范围为 [pow(-2,31), pow(2...
2020-03-29 19:51:33 62
原创 逆波兰表达式求值
题目描述 根据逆波兰表示法,求表达式的值。 运行示例 输入: [“2”, “1”, “+”, “3”, “*”] 输出: 9 解释: ((2 + 1) * 3) = 9 输入: [“4”, “13”, “5”, “/”, “+”] 输出: 6 解释: (4 + (13 / 5)) = 6 大体思路 建立栈,并依次将数字(非运算符)放入栈中 当遇到运算符时,将栈顶元素取出并删除两次,并把两数按顺序...
2020-03-22 13:47:49 203
原创 最小栈
题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。 运行示例 MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0)...
2020-03-22 11:53:08 76
原创 有效的括号
题目描述 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 运行示例 输入: “()[]{}” 输出: true 输入: “([)]” 输出: false 输入: “{[]}” 输出: true 大体思路 先判断符号个数是否为偶数...
2020-03-22 00:05:55 62
原创 环形链表
题目描述 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 运行示例 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 ...
2020-03-15 11:27:51 95
原创 删除排序链表中的重复元素
题目简述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 运行示例 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 大体思路 将头节点给temp 如果temp的值与temp.next的值相等,则将temp.next.next放在temp.next处 否...
2020-03-15 10:37:47 85
原创 合并两个有序链表
题目简述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 运行实例 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 代码实现 class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ...
2020-03-15 09:50:46 69
原创 买卖股票的最佳时机 II
题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 思路 将每两个相邻的数进行比较,并相加每个后一项较大时的差。 代码实现 class Solution { public: int maxProfit(ve...
2020-03-08 14:00:40 77
原创 买卖股票的最佳时机
题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 思路 先定义第一天买的价格int first = prices[0]。 后用if函数与后期价格进行比较,使first为最小的数。 再使利润a=price[i]-first,并用if函数找出最大的...
2020-03-01 13:18:28 114
原创 合并两个有序数组
题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 思路 由于nums1中有足够空间,所以考虑先将nums2中元素加入nums1现有元素之...
2020-03-01 12:43:26 72
原创 最大子序和
题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 思路 从数组的第一个数开始加和。 在加过某一项时,当前和小于0,说明前面负数绝对值较大,使结果变小。 舍弃前面的项,从新的一项开始加。 代码 class Solution { public: int maxSubArray(vector<int>& nums...
2020-03-01 11:58:36 68
原创 两数之和
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for(int i=0;i<nums.size()-1;i++) for(int j=i+1;j<nums.size();j++) if(nu...
2020-02-22 23:03:14 42
原创 移除元素
public int removeElement(int[] nums, int val) { int a=0; int n = nums.size(); for(int i=0;i<n;i++) { if(nums[i]!=val) { swap...
2020-02-22 23:01:01 55
原创 删除排序数组中的重复项
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) { return 0; } int i=0; for(int a=1;a<nu...
2020-02-22 22:47:25 96
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人