
LSGO(C++)
Evil
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode——第五百五十七题(C++):反转字符串中的单词|||
题目给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”**注意:**在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。思路用将单词放入栈的方式,如果没有到字符串末尾,那么空格是一个单词结束...原创 2019-10-11 21:12:59 · 310 阅读 · 0 评论 -
LeetCode——第三百四十四题(C++):反转字符串
题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[ ] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[...原创 2019-10-11 20:37:52 · 209 阅读 · 0 评论 -
LeetCode——第一百五十五题(C++):最小栈
题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);m...原创 2019-09-25 21:53:51 · 239 阅读 · 0 评论 -
LeetCode——第一百四十八题(C++):排序链表
题目在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路利用multlimap,排序之后再讲节点连接成链表,但是会使用额外的...原创 2019-09-25 20:37:15 · 174 阅读 · 0 评论 -
LeetCode——第一百四十六题(C++):LRU缓存机制
题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使...原创 2019-09-23 20:02:24 · 265 阅读 · 0 评论 -
LeetCode——第一百四十二题(C++):环形链表 ||
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2019-09-23 19:28:23 · 155 阅读 · 0 评论 -
LeetCode——第一百四十一题(C++):环形链表
题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tru...原创 2019-09-19 21:17:15 · 253 阅读 · 0 评论 -
LeetCode——第一百三十六题(C++):只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4使用异或运算实现,两者的值不同返回true,两者的值相同返回false。异或的特性:1.恒定律:A ^ 0 =...原创 2019-09-19 19:59:38 · 499 阅读 · 0 评论 -
LeetCode——第一百二十四题(C++):二叉树中的最大路径和
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。运行成功的代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tree...原创 2019-09-19 19:13:41 · 261 阅读 · 0 评论 -
LeetCode——第一百二十二题(C++):买卖股票的最佳时机 ||
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易...原创 2019-09-18 21:06:23 · 1226 阅读 · 0 评论 -
LeetCode——第一百二十一题(C++):买卖股票的最佳时机
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润...原创 2019-09-18 20:52:48 · 190 阅读 · 0 评论 -
LeetCode——第一百零四题(C++):二叉树的最大深度
题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。思路:递归运行成功的代码/** * Definition for a binary tree node. * struct TreeNode { * ...原创 2019-09-18 20:21:30 · 188 阅读 · 0 评论 -
LeetCode——第一百六十题(C++):相交链表
题目编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表在节点 c1 开始相交。示例1:示例2:示例3:注意:如果两个链表没有交点,返回 null。在返回结果后,两个链表仍须保持原有的结构可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。想法先遍历两个链表记录下它们的长度LenA和LenB,两者长度差为x。若存在交点...原创 2019-09-28 15:43:40 · 213 阅读 · 0 评论 -
LeetCode——第一百六十九题(C++):求众数
题目给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2想法排序,再返回中间数。运行成功的代码class Solution {public: int majorityE...原创 2019-09-28 15:51:52 · 300 阅读 · 0 评论 -
LeetCode——第二百九十二题(C++):Nim游戏
题目你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石头,最后一...原创 2019-10-11 20:02:54 · 783 阅读 · 0 评论 -
LeetCode——第二百三十八题(C++):除自身以外数组的乘积
题目给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输...原创 2019-10-09 18:47:12 · 196 阅读 · 0 评论 -
LeetCode——第二百三十七题(C++):删除链表中的节点
题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:...原创 2019-10-09 18:30:42 · 214 阅读 · 0 评论 -
LeetCode——第二百三十六题(C++):二叉树的最近公共祖先
题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1...原创 2019-10-01 19:08:02 · 268 阅读 · 0 评论 -
LeetCode——第二百三十五题(C++):二叉搜索树的最近公共祖先
题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6...原创 2019-10-01 17:37:09 · 167 阅读 · 0 评论 -
LeetCode——第二百三十一题(C++):2的幂
题目给定一个整数,写一个函数来判断它是否是2的幂。示例 1:输入: 1输出: true解释: 2^0 = 1示例 2:输入: 16输出: true解释: 2^4 = 16示例 3:输入: 218输出: false思路根据二进制的按位与规则,只有1&1==1,其余的为0.运行成功的代码class Solution {public: bool isPo...原创 2019-10-01 17:17:41 · 153 阅读 · 0 评论 -
LeetCode——第二百三十题(C++):二叉搜索树中第K小的元素
题目给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3输出: 3进阶:如果二叉搜索树经常...原创 2019-10-01 16:57:57 · 193 阅读 · 0 评论 -
LeetCode——第二百一十七题(C++):存在重复元素
题目给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路先对数组排序,然后判断相邻的元素是否相同运...原创 2019-10-01 09:54:21 · 144 阅读 · 0 评论 -
LeetCode——第二百一十五题(C++):数组中的第K个最大元素
题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入:[3,2,1,5,6,4] 和k = 2输出: 5示例 2:输入:[3,2,3,1,2,4,5,5,6] 和k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。...原创 2019-10-01 09:22:39 · 221 阅读 · 0 评论 -
LeetCode——第二百零六题(C++):反转链表
题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?运行成功的代码/** * Definition for singly-linked list. * struct ListNode { *...原创 2019-09-28 16:10:11 · 156 阅读 · 0 评论 -
LeetCode——第八十九题(C++):格雷编码
题目格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 – 001 – 111 – 310 – 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 – 0...原创 2019-09-17 15:49:41 · 173 阅读 · 0 评论 -
LeetCode——第八十八题(C++):合并两个有序数组
题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2019-09-17 15:18:42 · 241 阅读 · 0 评论 -
LeetCode——第二十题(C++):有效的括号
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “...原创 2019-09-04 19:13:56 · 278 阅读 · 0 评论 -
LeetCode——第十六题(C++):最接近的三数之和
题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如给定数组 nums = [-1,2,1,-4], 和 target = 1。 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).类似于第十五题的思路运行成功的代码...原创 2019-09-02 20:10:56 · 231 阅读 · 0 评论 -
LeetCode——第十五题(C++):三数之和
题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组例如给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]运行成功的代码class Solu...原创 2019-09-02 19:51:48 · 454 阅读 · 0 评论 -
LeetCode——第十四题(C++):最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。运行成功的代码 class Solution {pu...原创 2019-09-02 18:56:35 · 285 阅读 · 0 评论 -
LeetCode——第十一题(C++):盛水最多的容器
题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示...原创 2019-09-01 19:29:12 · 368 阅读 · 0 评论 -
LeetCode——第九题(C++):回文数
题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。运行成功的代码class Solution {public: bool isPalindrome(int x) { if(x<0) { return false; } ...原创 2019-08-31 09:53:27 · 319 阅读 · 0 评论 -
LeetCode——第八题(Java):字符串转换整数(atoi)
题目请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可...原创 2019-08-29 10:41:22 · 147 阅读 · 0 评论 -
LeetCode——第七题(Java):整数反转
题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21运行成功的代码class Solution { public static int reverse(int x) { if(x==0){ ...原创 2019-08-28 18:05:23 · 261 阅读 · 0 评论 -
LeetCode——第五题(C++):最长回文子串
题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: "aba"也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”从每一个回文对称点开始向左右遍历,直到左右字符不相等,求出最长子串。回文子串可能是奇数长度,对称点只有一个,也可能是偶数长度,则对称点有俩个。运行成功的代...原创 2019-08-27 17:22:15 · 882 阅读 · 0 评论 -
LeetCode——第四题(C++):寻找两个有序数组的中位数
题目定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + ...原创 2019-08-26 20:34:24 · 520 阅读 · 0 评论 -
LeetCode——第二十一题(C++):合并两个有序链表
题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4运行成功的代码/** * Definition for singly-linked list. * struct ListNode { * in...原创 2019-09-04 19:45:23 · 197 阅读 · 0 评论 -
LeetCode——第二十三题(C++):合并k个排序链表
题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。原创 2019-09-07 11:47:53 · 185 阅读 · 0 评论 -
LeetCode——第二十六题(C++):删除排序数组中的重复项
题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1,2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nu...原创 2019-09-07 12:45:28 · 191 阅读 · 0 评论 -
LeetCode——第七十八题(C++):子集
题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]发现一个思路:遇到一个数就把之前所有子集加上该数组成新的子集,遍历完毕即是新的子集.运行成功的代码clas...原创 2019-09-16 21:15:22 · 252 阅读 · 0 评论