
力扣刷题c++
中南自动化学院至渝
好记性不如烂笔头,多写写
展开
-
589. N 叉树的前序遍历 590. N 叉树的后序遍历 N 叉树没有中序遍历【每日一题】
589. N 叉树的前序遍历 思路 和二叉树的前后序遍历基本是一样的/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; }原创 2022-03-10 17:07:52 · 15895 阅读 · 0 评论 -
144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历【每日一题】
144. 二叉树的前序遍历思路 都是递归;没得说,搞清楚前、中、后序的定义就懂了,为了更贴合,和更好解释,我这儿用c++写,改成c python都差不多,python太简洁反而不美。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *原创 2022-03-10 15:57:47 · 15984 阅读 · 0 评论 -
回文链表
题目 请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true思路 把前面的一半入栈(注意奇数和偶数),(栈先进后出很好用)然后再一个个比,只要有不同的就 pass 掉 /* 有点奇怪他的 head 居然不是头指针,而直接是第一个节点,害原创 2021-05-20 16:30:38 · 19355 阅读 · 0 评论 -
leetcode 刷题 56. 合并区间
题目 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们原创 2021-04-18 22:22:45 · 25340 阅读 · 0 评论 -
Lccup 力扣杯春季编程大赛 2. 乐团站位 给定坐标和阶数 求螺旋数组中对应下标的值
题目 某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。 为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以 1,2,…,9 循环重复排列。例如当 num = 5 时,站位如图所示原创 2021-04-07 13:30:58 · 25341 阅读 · 0 评论 -
Lccup 力扣杯春季编程大赛 1、采购方案
题目描述 小力将 N 个零件的报价存于数组 nums。小力预算为 target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。 注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1示例 1:输入:nums = [2,5,3,5], t原创 2021-04-07 09:10:51 · 25225 阅读 · 0 评论 -
leetcode 540. 有序数组中的单一元素
540. 有序数组中的单一元素给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:输入: [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: [3,3,7,7,10,11,11]输出: 10注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。 难点在于 O(log n)时间复杂度和 O(1)空间复杂度方法1 能原创 2021-03-16 10:23:18 · 26195 阅读 · 0 评论 -
力扣 69. x 的平方根 三种方法
69. x 的平方根 题目很简单 给你一个x,返回他的平方根(去掉小数部分),要求不用已有的库函数,示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。方法1 暴力迭代class Solution {public原创 2021-03-10 12:51:45 · 26138 阅读 · 0 评论 -
力扣 1011. 在 D 天内送达包裹的能力
1011. 在 D 天内送达包裹的能力传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第 1 天原创 2021-03-08 12:29:42 · 26011 阅读 · 0 评论 -
力扣刷题 201. 数字范围按位与
201. 数字范围按位与c++,两种方法class Solution {public: int rangeBitwiseAnd(int m, int n) { // 0和任何东西做与操作都是0,那么意味着只要某一位上面出现了0,那么最后也就是0了,所以就转化为了求公共前缀的问题 // 找公共前缀,对大数不断消去最后的1,直到比小数还小就是公共前缀(做一点点解释,大数与小数的第一位不同必然是大数时1,小数是0,才能保证大数要大一点,我们消去大原创 2021-02-01 17:55:39 · 26154 阅读 · 1 评论 -
力扣刷题 977. 有序数组的平方
977. 有序数组的平方c++,两种方法class Solution {public: vector<int> sortedSquares(vector<int>& A) { int n = A.size(); vector<int> ans; for(int i=0;i<n;++i){ ans.push_back(A[i]*A[i]); }原创 2021-02-01 13:41:46 · 26003 阅读 · 0 评论 -
力扣刷题 面试题 17.10. 主要元素
面试题 17.10. 主要元素方法1class Solution: def majorityElement(self, nums: List[int]) -> int: for obj in set(nums): if nums.count(obj)>len(nums)/2: return obj return -1方法2 &nb原创 2021-02-01 10:45:23 · 26216 阅读 · 0 评论 -
力扣刷题 4. 寻找两个正序数组的中位数
4. 寻找两个正序数组的中位数 两种方法都能通过,但是排序的复杂度肯定不满足题目要求的。第二种我不知道是不是满足了复杂度要求,代码有点多,不过也还容易能看懂喽class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float: # reslist =原创 2021-02-01 10:16:34 · 26097 阅读 · 0 评论 -
力扣刷题 1458. 两个子序列的最大点积
1458. 两个子序列的最大点积class Solution {public: int maxDotProduct(vector<int>& nums1, vector<int>& nums2) { int m=nums1.size(),n=nums2.size(); int dp[m][n]; // 第一种方法,初始化涵盖在转移过程中 // for(int i=0;i<m;++i){原创 2021-01-31 19:24:53 · 26029 阅读 · 0 评论 -
两个闭区间有无交集判断,以及他们的交集怎么计算
设两个闭区间分别为:[a1,a2], [b1,b2],如果她俩有并集,那么并集一定是[max(a1,b1),min(a2,b2)] ,也就是说并集的起点是两个起点里面大的一个,终点是两个终点里面小的一个。 那么怎么判断两个闭区间有没有并集呢得满足下面得两个条件你的第一个区间的终点要比第二个的起点大,不然不可能有交集(并集)你的第二个区间的终点要比第一个的起.原创 2021-01-11 09:47:02 · 27202 阅读 · 1 评论 -
leetcode 875. 爱吃香蕉的珂珂
875. 爱吃香蕉的珂珂class Solution {public: int minEatingSpeed(vector<int>& piles, int H) { long left=1,right=*max_element(piles.begin(),piles.end()); while(left<right){ long mid =left+(right-left)/2; if(c原创 2021-01-10 21:19:46 · 25966 阅读 · 0 评论 -
leetcode 面试题 01.05. 一次编辑 动态规划
面试题 01.05. 一次编辑其实就是编辑距离 leetcode 72 编辑距离 动态规划class Solution {public: int min(int a, int b, int c) { int temp = a > b ? b : a; int result = c > temp ? temp : c; return result; } bool oneEditAway(string first, st原创 2021-01-07 16:50:45 · 25982 阅读 · 3 评论 -
leetcode 461. 汉明距离
461. 汉明距离简单题还真是简单class Solution {public: //判断一个整型数的二进制表示有多少个1 int CountOfOneInBinaryNumber(int num) { int count = 0; while (num) { num &= (num - 1); count++; } return count; } i原创 2021-01-07 16:47:01 · 25876 阅读 · 1 评论 -
leetcode 300 最长递增子序列 动态规划
300 最长递增子序列 想弄明白动态规划建议看大佬的笔记 算法书籍分享class Solution {public: int max(int a,int b){ int result=a>b?a:b; return result; } int lengthOfLIS(vector<int>& nums) { int n=nu原创 2021-01-07 16:28:17 · 25836 阅读 · 1 评论 -
leetcode 72 编辑距离 动态规划
72 编辑距离我讲的不清楚,只是在刷题,想弄明白动态规划建议看大佬的笔记 算法书籍分享class Solution {public: int min(int a, int b, int c) { int temp = a > b ? b : a; int result = c > temp ? temp : c; return result; } int minDistance(string word1, st.原创 2021-01-07 16:04:07 · 25893 阅读 · 0 评论 -
89. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释: 00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 0...原创 2020-04-23 22:58:10 · 24544 阅读 · 0 评论 -
717. 1比特与2比特字符
题目:有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。换句话说就是字符串的最后一位是0,因为考虑到最后一位是1肯定不可能最后一个字符是否必定为一个一比特字符。示例 1:输入: bits = [1, 0, 0]输出: True解释: 唯一...原创 2020-01-20 19:18:20 · 24774 阅读 · 0 评论 -
1254. 统计封闭岛屿的数目
题目:有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 )。我们从一块陆地出发,每次可以往上下左右 4 个方向相邻区域走,能走到的所有陆地区域,我们将其称为一座「岛屿」。如果一座岛屿 完全 由水域包围,即陆地边缘上下左右所有相邻区域都是水域,那么我们将其称为 「封闭岛屿」。请返回封闭岛屿的数目。换句话说就是从当前陆地走,你走不到数组边界的陆地都是封闭岛屿(或...原创 2020-01-20 18:16:33 · 24853 阅读 · 0 评论 -
764. 最大加号标志
题目:在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-...原创 2020-01-15 15:18:58 · 24659 阅读 · 0 评论 -
165. 比较版本号
比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假设...原创 2020-01-15 10:20:08 · 24779 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽...原创 2020-01-15 10:18:29 · 24653 阅读 · 0 评论 -
LeetCode1219 黄金矿工
题目描述:你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0。为了使收益最大化,矿工需要按以下 规则 来开采黄金:每当矿工进入一个单元,就会收集该单元格中的所有黄金。矿工每次可以从当前位置向上下左右四个方向走。每个单元格只能被开采(进入)一次。...原创 2020-01-12 12:40:36 · 24609 阅读 · 0 评论 -
从N个数中取出任意个数,求和为指定值的解,二进制版本和通用版本
从N个数中取出任意个数,求和为指定值的解,并输出对应的数,思想就是二进制思想,从N个数选任意个2^N 种可能,数组里面的每一元素可能被选中,可能不被选中,1代表选中,0代表不选中。假如N=3,哪么就有2^3=8种可能。000—111。000代表一个数都不选,111代表三个数都选。这种方法的缺点是 :一旦数组元素过大,数据量成指数增长。只是用来算小数据量的。c++代码如下#include <...原创 2019-08-05 16:31:57 · 18780 阅读 · 0 评论 -
11、盛最多水的容器
题目:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意: 你不能倾斜容器,n ...原创 2020-01-09 15:18:44 · 24423 阅读 · 0 评论 -
67. 二进制求和c++(四种方法)
题目:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1” 输出: “100”示例 2:输入: a = “1010”, b = “1011” 输出: “10101”思路:1、首先让两个字符串等长,若不等长,在短的字符串前补零2、然后从后到前遍历所有的位数,同位相加,记得加上进位,二进...原创 2019-12-26 10:50:04 · 27278 阅读 · 0 评论 -
3、无重复字符的最长子串
题目 :给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。思路:动态规划的想法去做,首尾指针来确定长度,首先从第一个字符作为开始位置形成子串,逐渐加入后一个字符,遍历判断刚加入的字符是否在之前已经存在,遍历结束都不存在说明加入这个字符后形成的子串还是无重复字符的。如果遍历到某个位置(k)是发现该字符已经存在了,说明不满足条件,我们需要把子串的起始位置(start)更新为该位置(k)的...原创 2019-11-08 16:03:17 · 17759 阅读 · 0 评论 -
1、两数之和
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数, 并返回他们的数组下标。你不能重复利用这个数组中同一...原创 2019-11-08 15:17:28 · 17907 阅读 · 0 评论