leetcode 乐乐的c++刷题之路
刷有限的题目,走无限的道路
陈乐乐happy
一个不追求浏览量的优质创作博主
展开
-
leetcode删除链表的倒数第N个节点c++
删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解:class Solution {public:...原创 2019-05-16 23:08:45 · 924 阅读 · 1 评论 -
leetcode四数之和c++
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ ...原创 2019-05-16 22:21:16 · 447 阅读 · 1 评论 -
leetcode电话号码的字母组合c++
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。解法1:先根据组合的思想算出需要多...原创 2019-05-16 16:34:58 · 411 阅读 · 0 评论 -
leetcode最接近的三数之和c++
最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).解法1:暴力法clas...原创 2019-05-16 15:15:54 · 211 阅读 · 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]]解法1:暴力法class Solu...原创 2019-05-15 12:22:14 · 646 阅读 · 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]输出: 49解法1:暴力法class S...原创 2019-05-15 11:02:57 · 232 阅读 · 0 评论 -
leetcode合并区间c++
合并区间给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...原创 2019-05-14 22:19:34 · 1117 阅读 · 0 评论 -
leetcode有效的完全平方数c++
有效的完全平方数给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False解法1:递增判断public: bool isPerfectSquare(int num) { int i...原创 2019-05-12 20:52:50 · 772 阅读 · 0 评论 -
leetcode两个数组的交集 II c++
两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。...原创 2019-05-12 20:23:51 · 513 阅读 · 0 评论 -
leetcode两个数组的交集c++
两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。解法1:将其中数组一个放入set中减少重复...原创 2019-05-10 00:35:39 · 352 阅读 · 0 评论 -
leetcode反转字符串中的元音字母c++
反转字符串中的元音字母编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"说明:元音字母不包含字母"y"。分析:是将单词中的元音序列反转元音包括a,e,i,o,u,A,E,I,O,U解法1:双指针法,利用set判断是否是元音字符clas...原创 2019-05-09 20:04:55 · 456 阅读 · 0 评论 -
leetcode反转字符串c++
反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输...原创 2019-05-09 17:23:55 · 132 阅读 · 0 评论 -
leetcode 4的幂c++
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。示例 1:输入: 16输出: true示例 2:输入: 5输出: false进阶:你能不使用循环或者递归来完成本题吗?解法1:循环class Solution {public: bool isPowerOfFour(int num) { if(num==1) ...原创 2019-05-09 17:02:55 · 190 阅读 · 0 评论 -
leetcode3的幂c++
给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?解法1:循环class Solution {public: bool isPowerOfThree(...原创 2019-05-09 16:21:36 · 543 阅读 · 0 评论 -
leetcode区域和检索 - 数组不可变c++
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不可变...原创 2019-05-09 15:56:14 · 164 阅读 · 0 评论 -
leetcode Nim 游戏c++
Nim 游戏你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 ...原创 2019-05-09 15:32:26 · 356 阅读 · 0 评论 -
leetcode单词模式c++
给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba", str...原创 2019-05-09 13:42:57 · 148 阅读 · 0 评论 -
leetcode移动零c++
移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解法1:双指针法class Solution {public: void moveZeroes(vector<int>&a...原创 2019-05-09 11:13:24 · 156 阅读 · 0 评论 -
leetcode第一个错误版本c++
第一个错误版本你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元...原创 2019-05-08 19:43:58 · 209 阅读 · 0 评论 -
leetcode缺失数字c++
缺失数字给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?解法1:排序后比对值和下标是否对应class Solution {public...原创 2019-05-08 19:06:17 · 603 阅读 · 0 评论 -
leetcode丑数c++
丑数编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false 解释: 14 不是丑数,因为它包含了另外一个质因数 7。说明:1 是丑数。输入不会超过 32 位有...原创 2019-05-08 18:35:07 · 351 阅读 · 0 评论 -
leetcode各位相加c++
各位相加给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。解法1:暴力法class Solution {public: int addDigits(int num) { int sum=0; ...原创 2019-05-08 18:17:57 · 225 阅读 · 0 评论 -
leetcode有效的字母异位词c++
有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解...原创 2019-05-07 11:05:52 · 220 阅读 · 2 评论 -
leetcode删除链表中的节点c++
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], node = 1输出: [4...原创 2019-05-07 10:43:18 · 315 阅读 · 0 评论 -
leetcode回文链表c++
回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解法1:将前半部分节点放入容器a中,将后半部分节点放入容器b中容器a正序与容器b倒序比较是否相等,不等则不是回文链表class Sol...原创 2019-05-07 10:22:13 · 175 阅读 · 0 评论 -
leetcode用栈实现队列c++
用栈实现队列使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue...原创 2019-05-07 09:39:56 · 252 阅读 · 0 评论 -
leetcode 2的幂c++
2的幂给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false解法1:class Solution {public: bool isPowerOfTwo(int n) { if(n...原创 2019-05-07 00:25:40 · 205 阅读 · 0 评论 -
leetcode用队列实现栈c++
用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空解:用两个队列实现栈stl中队列的使用:#include<queue>// 队列 queue<int> q; //参数是数据类型,这是队列的定义方式q.empty()// 如果队列为空返回t...原创 2019-05-06 21:57:38 · 642 阅读 · 0 评论 -
leetcode存在重复元素 II c++
存在重复元素 II给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。//可以比k小示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: n...原创 2019-05-06 21:24:22 · 215 阅读 · 1 评论 -
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解法1:将nums进行排序然后判...原创 2019-05-06 20:38:12 · 257 阅读 · 3 评论 -
leetcode反转链表c++
反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解法1:迭代class Solution {public: ListNode* reverseList(ListNode* h...原创 2019-05-06 19:52:34 · 174 阅读 · 0 评论 -
leetcode同构字符串c++
同构字符串给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: true示例 2:输入: s = "foo", t = "bar"输出:...原创 2019-05-06 18:53:55 · 441 阅读 · 0 评论 -
leetcode计数质数c++
计数质数统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。质数定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。解法1:class Solution {public: int countPrimes(int n) { ...原创 2019-05-06 16:18:31 · 781 阅读 · 0 评论 -
leetcode有效的回旋镖c++
回旋镖定义为一组三个点,这些点各不相同且不在一条直线上。给出平面上三个点组成的列表,判断这些点是否可以构成回旋镖。示例 1:输入:[[1,1],[2,3],[3,2]]输出:true示例 2:输入:[[1,1],[2,2],[3,3]]输出:false解:计算斜率判断是否相等class Solution {public: static bool cmp(cons...原创 2019-05-05 11:39:09 · 189 阅读 · 0 评论 -
leetcode移除链表元素c++
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解法1:在原链表修改:class Solution {public: ListNode* removeElements(ListNode* head, int val) ...原创 2019-05-03 22:43:56 · 290 阅读 · 0 评论 -
leetcode打家劫舍c++
打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷...原创 2019-05-03 22:07:46 · 202 阅读 · 0 评论 -
leetcode快乐数c++
快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 0...原创 2019-05-03 21:43:34 · 726 阅读 · 0 评论 -
leetcode颠倒二进制位c++
颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 001...原创 2019-05-03 20:11:47 · 346 阅读 · 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,9...原创 2019-04-29 16:57:02 · 356 阅读 · 0 评论 -
leetcode阶乘后的零c++
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。解法1:判断乘数中是否有2,5因子,没有则跳过,有则乘上sum中。再判断sum尾数是否有0class Solution {...原创 2019-04-29 15:45:20 · 160 阅读 · 0 评论