Leetcode
叶叶才不是小辣鸡
博客记录渴望成为合格程序员的日常
展开
-
【LeetCode】307. 区域和检索 - 数组可修改
1.题目给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点点击跳转原题2.思路在上题的基础上,增加update函数,用于更新数值;先求出nums[i]=num[i+1]-num[i];求出val与nums[i]的差值den;在后续数组num中依次增加den即可。3.代码class NumArray {publ...原创 2018-11-11 20:27:26 · 621 阅读 · 0 评论 -
【LeetCode】 409. 最长回文串
1.题目给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。2.思路建立map存放26个大小写字母的数量;如果该字母数量为偶数,则sum+=value;如果该字母数量为奇数,则把value-1;3.代码class Solution {...原创 2018-11-04 16:46:37 · 263 阅读 · 0 评论 -
【LeetCode】 345. 反转字符串中的元音字母
1.题目编写一个函数,以字符串作为输入,反转该字符串中的元音字母。2.思路遍历字符串,把元音字母放入向量中;再次遍历字符串的时候,把这些元音字母再从向量中从后向前输出。3.代码class Solution {public: string reverseVowels(string s) { int len=s.length(); vector<cha...原创 2018-11-04 16:11:44 · 129 阅读 · 0 评论 -
【LeetCode】788. 旋转数字
1.题目我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X不同的数。要求每位数字都要被旋转。如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。现在我们有一个正整数 N, 计...原创 2018-11-02 10:39:39 · 176 阅读 · 0 评论 -
【LeetCode】 551. 学生出勤纪录 I
1.题目给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:‘A’ : Absent,缺勤‘L’ : Late,迟到‘P’ : Present,到场如果一个学生的出勤纪录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。你需要根据这个学生的出勤纪录判断他是否会被奖赏。2.思路遍历字符串,计算A的个数,大于1则返回false;当...原创 2018-11-06 21:35:42 · 135 阅读 · 0 评论 -
【LeetCode】 705. 706. 设计哈希映射\集合
1.题目705:不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。706:不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功...原创 2018-10-30 22:02:35 · 914 阅读 · 0 评论 -
【LeetCode】 762. 二进制表示中质数个计算置位
1.题目给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)2.思路step1:把L到R的数字依次换算成二进制step2:把二进制数中的1统计出来,cstep3:判断c是不是素数3.代码class Solution {...原创 2018-10-30 21:35:23 · 482 阅读 · 0 评论 -
【LeetCode】812. 最大三角形面积
1.题目给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释:这五个点如下图所示。组成的橙色三角形是最大的,面积为2。2.思路step1:遍历数组找到三个点step2:求出三个点组成三角形的面积3.代码class Solution {pu...原创 2018-10-30 11:15:51 · 309 阅读 · 0 评论 -
【LeetCode】868. 二进制间距
1.题目给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。如果没有两个连续的 1,返回 0 。2.思路step1:把数字换算成二进制放在向量中;step2:把向量中等于一的数字的索引放入新的向量中;step3:遍历新的向量,求前后元素之差,取最大值即可3.代码class Solution {public: int binaryGap(i...原创 2018-10-30 09:20:52 · 138 阅读 · 0 评论 -
【LeetCode】 784. 字母大小写全排列
1.题目给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。2.思路递归思路3.代码class Solution {public: void change(vector<string> &res,string S,int i){ int len=S.length(); if(i>le...原创 2018-11-04 17:36:47 · 325 阅读 · 0 评论 -
【LeetCode】 415. 字符串相加
1.题目给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。2.思路利用字符流,将输入字符串转化为数字然后载相加,转换为字符串输出。存在...原创 2018-11-04 19:19:59 · 190 阅读 · 0 评论 -
【LeetCode】 腾讯--两数之和
1.题目给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。2.代码class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int len=nums.size();...原创 2018-11-07 10:01:09 · 154 阅读 · 0 评论 -
【LeetCode】303. 区域和检索 - 数组不可变
1.题目给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。点击跳转原题2.思路定义num数组,把前i个元素的和放入其中;调用的时候直接返回即可;3.代码class NumArray {public: vector<int> num; NumArray(vector<int>...原创 2018-11-11 19:42:05 · 252 阅读 · 0 评论 -
【LeetCode】204. 计数质数
1.题目统计所有小于非负整数 n 的质数的数量。点击跳转原文2.思路写isPrime函数用于判断该数字是否为素数bool isPrime(int n){ if(n==1) return false; else if(n==2) return true; else{ for(int i=2;i<=n/2;i++){ if(n%i==0){ return f...原创 2018-11-11 18:42:19 · 245 阅读 · 0 评论 -
【LeetCode】599. 两个列表的最小索引总和
1.题目假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。点击跳转原文2.思路把list1的元素和索引放入map中;在lsit2中寻找map中存在的元素;计算索引之和并进行比较,3.代...原创 2018-11-11 10:50:26 · 164 阅读 · 0 评论 -
【LeetCode】448. 找到所有数组中消失的数字
1.题目给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。点击跳转原文2.思路从1-n遍历,依次寻找未出现在nums中的值,放入res中返回...原创 2018-11-11 10:05:54 · 304 阅读 · 0 评论 -
【LeetCode】451. 根据字符出现频率排序
1.题目给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入: “tree”输出: “eert”解释: 'e’出现两次,'r’和’t’都只出现一次。 因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。点击跳转原题2.思路建立map数组统计字母数量;建立和map类型一直的数组用于排序;自定义排序算法,按照数量从大到小排序;输出...原创 2018-11-10 17:14:58 · 220 阅读 · 0 评论 -
【LeetCode】387. 字符串中的第一个唯一字符
1.题目给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = “leetcode” 返回 0.s = “loveleetcode”, 返回 2.点击跳转原题2.思路建立数组用于存放26个字母的数量;把数组内值为1的对应字符串中的下标输出即可。3.代码class Solution {public: int firstUn...原创 2018-11-10 16:27:41 · 172 阅读 · 0 评论 -
【LeetCode】506. 相对名次
1.题目给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”(“GoldMedal”, “Silver Medal”, “Bronze Medal”)。(注:分数越高的选手,排名越靠前。)点击跳转原题2.思路建立一个新的数组arr=nums,用于存放从大到小排序好的元素;遍历数组arr,按顺序放入相应st...原创 2018-11-10 15:26:32 · 327 阅读 · 0 评论 -
【LeetCode】 腾讯—— 两个排序数组的中位数
1.题目给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。你可以假设 nums1 和 nums2 不同时为空点击跳转原题2.代码public: double findMedianSortedArrays(vector<int>& nums1, vecto...原创 2018-11-07 16:33:42 · 137 阅读 · 0 评论 -
【LeetCode】520. 检测大写字母
1.题目给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。否则,我们定义这个单词没有正确使用大写字母。2.思路考虑三种情况;遍历字符串,记录小写字母的数量,和最后一个大写字母的下...原创 2018-10-31 16:29:41 · 184 阅读 · 0 评论 -
【LeetCode】168. Excel表列名称
1.题目https://leetcode-cn.com/problems/excel-sheet-column-title/description/2.思路把数字/26像进制转化一样操作3.代码string convertToTitle(int n){ string str=""; int i,j=0; while(n) { i=(n-1)%26;...原创 2018-10-24 11:26:25 · 146 阅读 · 0 评论 -
【LeetCode】 541. 反转字符串 II
1.题目给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。2.思路step1:把字符串长度、对2k取余剩下的数字,以及÷2k得到的结果存储下来;step2:先把钱2k个字符的前k个字符翻转step3:...原创 2018-10-29 21:43:10 · 459 阅读 · 0 评论 -
【LeetCode】500. 键盘行
1.题目给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘行题目2.思路step1:建立一个map容器,容器中存放键盘中的三行,每行数据对应一个value。step2:遍历vector向量中的元素,遍历字符串元素中的每一个字母。step3:对首字母进行判断,先将大写变成小写,判断首字母在map中对应value,将值存入first中。step4:继续遍历接下来的字母...原创 2018-10-25 08:59:47 · 209 阅读 · 1 评论 -
【LeetCode】922. 按奇偶排序数组 II
1.题目给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。2.思路新建vector B,遍...原创 2018-10-22 21:24:24 · 404 阅读 · 0 评论 -
【LeetCode】 455. 分发饼干
1.题目每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小朋友最多只能拥有一块饼干。示例 1:输入:...原创 2018-10-17 16:49:19 · 270 阅读 · 0 评论 -
【LeetCode】860. 柠檬水找零
题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:...原创 2018-10-17 15:26:35 · 197 阅读 · 0 评论 -
【LeetCode】 779. 第K个语法符号
1. 题目在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为10。给定行数 N 和序数 K,返回第 N 行中第 K个字符。(K从1开始)例子:输入: N = 1, K = 1输出: 0输入: N = 2, K = 1输出: 0输入: N = 2, K = 2输出: 1输入: N = 4, K = 5输出: 1解释:...原创 2018-10-16 11:57:47 · 992 阅读 · 0 评论 -
【LeetCode】 319. 灯泡开关
递归问题题目介绍初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。示例:输入: 3输出: 1解释:初始时, 灯泡状态 [关闭, 关闭, 关闭]...原创 2018-10-15 21:21:18 · 458 阅读 · 0 评论 -
【LeetCode】 821. 字符的最短距离
Vector向量的应用1. 题目介绍题目给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。示例 1:输入: S = “loveleetcode”, C = ‘e’输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]说明:1.字符串 S 的长度范围为 [1, 10000]。2.C 是一个...原创 2018-10-15 20:27:50 · 354 阅读 · 0 评论 -
【LeetCode】 213. 打家劫舍 II
1.题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解...原创 2018-10-18 22:24:33 · 140 阅读 · 0 评论 -
【LeetCode】908. 最小差值 I
1.题目给定一个整数数组 A,对于每个整数 A[i],我们可以选择任意 x 满足 -K <= x <= K,并将 x 加到 A[i] 中。在此过程之后,我们得到一些数组 B。返回 B 的最大值和 B 的最小值之间可能存在的最小差值最小差值 I2.思路step1:在数组中找到最大最小值step2:如果max-min<=2K,那么就可以把它们化成一样的数值;反之返回...原创 2018-10-25 10:54:48 · 197 阅读 · 0 评论 -
【LeetCode】693. 交替位二进制数
1.题目给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。交替位二进制数2.思路step1:十进制转换成二进制,除二取余。step2:把这次的余数(i)与下次的余数(j)进行比较,若相等返回false3.代码bool hasAlternatingBits(int n) { int m=n; int i=-...原创 2018-10-25 11:38:05 · 283 阅读 · 0 评论 -
【LeetCode】 806. 写字符串需要的行数
1.题目806我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 ‘a’ 需要的单位, widths[1] 代表 ‘b’ 需要的单位,…, widths[25] 代表 ‘z’ 需要的单位。现在回答两个问...原创 2018-10-28 14:27:53 · 96 阅读 · 0 评论 -
【LeetCode】 350. 两个数组的交集 II
1.题目给定两个数组,编写一个函数来计算它们的交集。2.思路此题对第一题的区别在于可以输出相同数字例如:输入【1,2,2,1】,【2,2】;输出【2,2】step1:遍历两个向量;step2:把两个数组重复的元素加入到vector res中(可以重复),并把此元素在nums2中删除,避免重复;step3:返回vector注意:数组1、2为空集的时候,直接返回空集3.代码cl...原创 2018-10-29 18:51:12 · 128 阅读 · 0 评论 -
【LeetCode】171. Excel表列序号
1.题目给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 7012.思路利用map存放字母和其对应的数据3.代码...原创 2018-10-24 08:56:32 · 174 阅读 · 0 评论 -
【LeetCode】 349. 两个数组的交集
1.题目给定两个数组,编写一个函数来计算它们的交集。2.思路step1:遍历两个向量;step2:把重复的元素加入到set中(set不重复)step3:返回set对应的vector注意:数组1、2为空集的时候,直接返回空集3.代码vector<int> intersection(vector<int>& nums1, vector<int&...原创 2018-10-29 15:28:47 · 140 阅读 · 0 评论 -
【LeetCode】 237. 删除链表中的节点
1.题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5的第二个节点,那么在调用了你的函数之后,...原创 2018-10-23 18:18:32 · 113 阅读 · 0 评论 -
【LeetCode】804. 唯一摩尔斯密码词
1.题目国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应"-…", “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".&原创 2018-10-23 17:17:13 · 124 阅读 · 0 评论 -
【LeetCode】 575. 分糖果
1.题目给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。2.思路建立map存放不同类型的糖果,得出map长度即可3.代码int distributeCandies(vector<int>& candies){ map<int,int>m...原创 2018-10-28 16:50:30 · 174 阅读 · 0 评论