
LeetCode
以南丶
这个作者很懒,什么都没留下…
展开
-
Leetcode 删除排序数组中的重复项(c++)
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。例如:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。你不需要考虑数组中超出新长度后面的...原创 2018-10-22 11:27:22 · 327 阅读 · 0 评论 -
Leetcode(链表)删除链表的倒数第N个节点(c++)
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。/** * Definition for singly-linked list. * struct ListNode ...原创 2018-11-22 23:57:13 · 724 阅读 · 0 评论 -
LeetCode(链表)反转链表(c++)
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...原创 2018-11-23 11:28:18 · 4451 阅读 · 2 评论 -
Leetcode(链表)合并两个有序链表(c++)
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struct ListNode { *原创 2018-11-23 12:17:35 · 537 阅读 · 0 评论 -
LeetCode(链表)回文链表(c++)
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode...原创 2018-11-23 13:27:19 · 1085 阅读 · 1 评论 -
LeetCode(链表)判断环形链表(c++)
给定一个链表,判断链表中是否有环。用追赶法,一个跑两步,一个跑一步,看能否相遇/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */...原创 2018-11-23 14:41:53 · 406 阅读 · 0 评论 -
Leetcode(链表)反转链表 II(c++)
Reverse a linked list from position m to n. Do it in one-pass.Note: 1 ≤ m ≤ n ≤ length of list.Example:Input: 1->2->3->4->5->NULL, m = 2, n = 4Output: 1->4->3->2->5->...原创 2018-11-26 22:34:50 · 432 阅读 · 2 评论 -
Leetcode(链表)奇偶链表(c++)
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2-&g...原创 2018-11-30 14:14:31 · 1007 阅读 · 0 评论 -
Leetcode(链表)相交链表(c++)
编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表:A: a1 → a2↘c1 → c2 → c3↗B: b1 → b2 → b3在节点 c1 开始相交。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。解题...原创 2018-11-30 14:54:24 · 986 阅读 · 0 评论 -
Leetcode(链表)两数相加(c++)
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2018-11-28 15:15:42 · 860 阅读 · 0 评论 -
Leetcode(树)二叉树的最大深度(c++)
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。解题思路:采用递归思想,二叉树的深度等于 它左右子树中较大的那个深度加1。/** * Definition for a b...原创 2018-12-03 18:52:14 · 1523 阅读 · 0 评论 -
Leetcode(链表) 删除链表中的节点(c++)
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 ...原创 2018-11-22 21:24:45 · 2243 阅读 · 0 评论 -
Leetcode 反转字符串(c++)
编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: “hello”输出: “olleh”示例 2:输入: “A man, a plan, a canal: Panama”输出: “amanaP :lanac a ,nalp a ,nam A”class Solution {public: string reverseString(string s) { ...原创 2018-10-26 15:02:53 · 324 阅读 · 0 评论 -
Leetcode 买卖股票的最佳时机 II(c++)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获...原创 2018-10-22 12:17:11 · 680 阅读 · 0 评论 -
Leetcode 旋转数组(c++)
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k...原创 2018-10-22 16:04:11 · 1137 阅读 · 0 评论 -
Leetcode 存在重复(c++)
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。(空数组返回false)(1)先用sort排序,然后判断是否有相邻相等的数即可class Solution {public: bool containsDuplicate(vector<int>& nums) { ...原创 2018-10-22 16:30:49 · 487 阅读 · 0 评论 -
Leetcode 只出现一次的数字(c++)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。(1)首先想到用count统计,通过了,但耗时超高class Solution {public: int singleNumber(vector<int>& nums) { for (int i=0;i<nums.size();++i) ...原创 2018-10-22 17:00:37 · 1055 阅读 · 0 评论 -
Leetcode 两个数组的交集 II(c++)
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。采用map存储和查找!c...原创 2018-10-22 18:39:44 · 1266 阅读 · 0 评论 -
Leetcode 加一(c++)
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。class Solution {public: vector<int> plusOne(...原创 2018-10-22 19:29:26 · 745 阅读 · 0 评论 -
Leetcode 移动零(c++)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解:用递减iterator删除0(erase),记录删除的0个数,最后在数组后面插入n个0.class Solution {public: voi...原创 2018-10-23 09:54:47 · 367 阅读 · 0 评论 -
Leetcode 两数之和(c++)
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1](1)双遍历,耗时久class Solution {public: vector<i...原创 2018-10-23 10:53:35 · 2439 阅读 · 1 评论 -
Leetcode 有效的数独(c++) 清晰易懂
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".","."...原创 2018-10-23 14:40:36 · 1717 阅读 · 0 评论 -
Leetcode 旋转图像(c++)
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix ...原创 2018-10-23 16:22:49 · 617 阅读 · 0 评论 -
Leetcode(树)二叉树的层次遍历(c++)
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]解题思路:借助队列结构,先将根节点入队,然后出队,访问该结点,如果它有左子树,则将左子树根节点入队;若果它有右子树,则将右子树根结点...原创 2018-12-03 20:42:50 · 1376 阅读 · 1 评论