![](https://img-blog.csdnimg.cn/20200412224958569.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
leetcode刷题记录
NayelyAA
我想上红名
展开
-
LeetCode 756. Pyramid Transition Matrix
题目描述756. 金字塔转换矩阵AC代码1.求出所有不同字母产生的字母集合2.从下往上构造,看相邻两个字母可能构成的集合有哪些,递归枚举,直到能构建出金字塔的顶端class Solution { //allow用于保存所有不同字母产生的新字母集合 List<Character>[][] allow=new ArrayList[7][7]; public boolean pyramidTransition(String bottom, List<String原创 2020-05-18 15:23:21 · 179 阅读 · 0 评论 -
LeetCode 464. Can I Win
题目描述464. 我能赢吗AC代码/*1.两个人选完所有的数后,得到的和都不够desireTotal(即前m项和<desireTotal),那么第一个玩家肯定会输;2.如果t<=1,那么第一个玩家可以直接获胜*/class Solution { //f[0]表示整数1是否被选择过,f[1]表示整数2是否被选择过,null代表还未开始计算过 Boolean[] f=null; int m; public boolean canIWin(int _m,原创 2020-05-18 15:22:42 · 125 阅读 · 0 评论 -
LeetCode 458. Poor Pigs
题目描述458. 可怜的小猪AC代码class Solution { public int poorPigs(int buckets, int minutesToDie, int minutesToTest) { //一头猪在测试时间内最多可以喝几次水 int base=minutesToTest/minutesToDie+1; int pignum=0,n=1; while(n<buckets){原创 2020-05-18 15:18:27 · 142 阅读 · 0 评论 -
LeetCode 343. Integer Break
题目描述343. 整数拆分AC代码class Solution { public int integerBreak(int n) { if(n<=3) return n-1; int res=1; if(n%3==1){ res*=4;n-=4; }else if(n%3==2){ res*=2;n-=2; } while(n>0){原创 2020-05-18 15:17:51 · 99 阅读 · 0 评论 -
LeetCode 650. 2 Keys Keyboard
题目描述650. 只有两个键的键盘AC代码class Solution { public int minSteps(int n) { int res=0; for(int i=2;n>1;i++) while(n%i==0) { res+=i; n/=i; } return res; }}原创 2020-05-18 15:17:02 · 128 阅读 · 0 评论 -
LeetCode 223. Rectangle Area
题目描述Rectangle AreaAC代码 /*求两个矩形并集的面积=两个矩形的总面积-两个矩形交集的面积那么交集的面积怎么求?首先要求出交集的长和宽就行了。交集的长度L=min(C,G)-max(A,E),L<0说明不重合交集的宽度W=min(D,H)-max(B,F),L<0说明不重合*/class Solution { public int computeArea(int A, int B, int C, int D, int E, int F, int G,原创 2020-05-18 15:16:36 · 156 阅读 · 0 评论 -
LeetCode 891. Sum of Subsequence Widths
题目描述891. 子序列宽度之和AC代码将数组 A 从小到大排序。假如我们固定了当前子序列的最小值 A[i],假设数组下标从 0 开始,则以 A[i]为最小值贡献的答案为,(A[n−1]−A[i])2n−i−2+(A[n−2]−A[i])2n−i−3+⋯+(A[i+1]−A[i])20(A[n−1]−A[i])2^n−i−2+(A[n−2]−A[i])2^n−i−3+⋯+(A[i+1]−A[i])2^0(A[n−1]−A[i])2n−i−2+(A[n−2]−A[i])2n−i−3+⋯+(A[i+1]原创 2020-05-18 15:13:41 · 126 阅读 · 0 评论 -
LeetCode 319. Bulb Switcher
题目描述319. 灯泡开关AC代码/*1~n里面有多少个数的约数个数是奇数。*/class Solution { public int bulbSwitch(int n) { return (int)Math.sqrt(n); }}原创 2020-05-18 15:12:44 · 111 阅读 · 0 评论 -
LeetCode 829. Consecutive Numbers Sum
LeetCode 829. Consecutive Numbers Sum829. 连续整数求和/*n=a+(a+1)+...+(a+b-1)a是首项,b是项数a=(2n/b-(b-1))/01.我们要求所有除法都可以整除2.a>0满足上面两个条件的a如果存在,那么就存在这样一个连续序列细化一下条件,如下:1.b是2n的约数,2可以被(2n/b-(b-1))整除2.2n>b(b-1)*/class Solution { public int consec原创 2020-05-18 15:10:42 · 118 阅读 · 0 评论 -
LeetCode 462. Minimum Moves to Equal Array Elements II
题目描述462. 最少移动次数使数组元素相等 IIAC代码class Solution { public int minMoves2(int[] nums) { Arrays.sort(nums); int n=nums.length; int x=nums[n/2]; int res=0; for(int y:nums) res+=Math.abs(x-y); return原创 2020-05-18 15:09:47 · 163 阅读 · 0 评论 -
LeetCode 268. Missing Number【Java】
题目描述268. 缺失数字AC代码先算出来1~nnn的和是多少,然后减去nums数组中出现的数,遍历完数组剩下的就是答案。class Solution { public int missingNumber(int[] nums) { int n=nums.length; int sum=n*(n+1)/2; for(int x:nums) sum-=x; return sum; }}...原创 2020-05-18 15:09:04 · 108 阅读 · 0 评论 -
Google算法面试题(二)
Google面试题(二)LeetCode 14. Longest Common PrefixLeetCode 20. Valid ParenthesesLeetCode 43. Multiply StringsLeetCode 48. Rotate ImageLeetCode 31. Next PermutationLeetCode 23. Merge k Sorted ListsLeetCode 33. Search in Rotated Sorted ArrayLeetCode 11.原创 2020-05-12 19:44:52 · 294 阅读 · 0 评论 -
Google算法面试题(一)
Google算法面试题(一)LeetCode 66. Plus OneLeetCode 326. Power of ThreeLeetCode 883. Projection Area of 3D ShapesLeetCode 230. Kth Smallest Element in a BSTLeetCode 139. Word BreakLeetCode 930. Binary Subarrays With SumLeetCode 228. Summary RangesLeetCode原创 2020-05-12 19:43:41 · 567 阅读 · 0 评论 -
Facebook算法面试题
LeetCode 125. Valid PalindromeLeetCode 88. Merge Sorted ArrayLeetCode 278. First Bad VersionLeetCode 98. Validate Binary Search TreeLeetCode 173. Binary Search Tree IteratorLeetCode 238. Product of Array Except SelfLeetCode 56. Merge IntervalsLeetCo原创 2020-05-12 19:43:06 · 267 阅读 · 0 评论 -
LeetCode 68. Text Justification【Java】
题目描述68. 文本左右对齐AC代码/*1.如果是最后一行,只实现左对齐,每个单词直接插一个空格,行末插若干个空格,最后凑齐本行的总长度是maxWidth2.如果这一行只有一个单词,则直接在行尾加上空格就行了3.如果是其它情况,需要计算总共填补多少空格,然后均分在单词之间就行了。时间复杂度:O(n)*/class Solution { public List<String> fullJustify(String[] words, int maxWidth) {原创 2020-05-11 20:48:01 · 170 阅读 · 0 评论 -
LeetCode 71. Simplify Path【Java】
题目描述71. 简化路径AC代码class Solution { public String simplifyPath(String path) { path+='/'; String res="",s=""; for(char c:path.toCharArray()){ if(res.isEmpty()) res+=c; else if(c!='/') s+=c; els原创 2020-05-11 20:47:16 · 116 阅读 · 0 评论 -
LeetCode 12. Integer to Roman【Java】
题目描述12. 整数转罗马数字AC代码class Solution { public String intToRoman(int num) { int values[]=new int[]{1000,900,500,400,100,90,50,40,10,9,5,4,1}; String reps[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; String res=原创 2020-05-11 20:46:43 · 156 阅读 · 0 评论 -
LeetCode 481. Magical String【C++】
题目描述481. 神奇字符串AC代码这题用Java写超时了所以用C++写了遍class Solution {public: int magicalString(int n) { string s="122"; //先构造字符串 for(int i=2,k=1;i<n;i++,k=3-k){ for(int j=0;j<s[i]-'0';j++) s+=to_string(k)原创 2020-05-11 20:45:55 · 153 阅读 · 0 评论 -
LeetCode 299. Bulls and Cows【Java】
题目描述299. 猜数字游戏AC代码class Solution { public String getHint(String secret, String guess) { //A记录数字和位置都猜对的个数,B记录数字猜对了但是位置不对的个数 int a=0,b=0; //数字0-9的出现次数 int nums[]=new int[10]; for(int i=0;i<secret.length();i++原创 2020-05-11 20:44:52 · 157 阅读 · 0 评论 -
LeetCode 24. Swap Nodes in Pairs【Java】
题目描述24. 两两交换链表中的节点AC代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode swapPairs(ListNode head) { ListNod原创 2020-05-11 20:43:36 · 122 阅读 · 0 评论 -
LeetCode 504. Base 7【Java】
题目描述504. 七进制数AC代码class Solution { public String convertToBase7(int num) { if(num<0) return '-' + convertToBase7(-num); if(num<7) return Integer.toString(num); return convertToBase7(num/7)+Integer.toString(num%7);原创 2020-05-11 20:42:48 · 166 阅读 · 0 评论 -
LeetCode 67. Add Binary【Java】
题目描述67. 二进制求和AC代码第一次用BigInteger做题,相关做法mark下!在leetcode上,记得导入该类。import java.math.BigInteger;class Solution { public String addBinary(String a, String b) { BigInteger x=new BigInteger(a,2),y=new BigInteger(b,2); BigInteger xor_add,ca原创 2020-05-11 20:42:15 · 122 阅读 · 0 评论 -
LeetCode 263. Ugly Number【Java】
题目描述263. 丑数AC代码class Solution { public boolean isUgly(int num) { if(num<1) return false; while(num%2==0) num/=2; while(num%3==0) num/=3; while(num%5==0) num/=5; return nu原创 2020-05-11 20:41:05 · 115 阅读 · 0 评论 -
LeetCode 54. Spiral Matrix【Java】
题目描述54. 螺旋矩阵AC代码class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> list=new ArrayList<>(); if(matrix.length==0) return list; int left=0,top=0,right=matrix[0].length-1,bottom=ma原创 2020-05-08 17:37:41 · 122 阅读 · 0 评论 -
LeetCode 134. Gas Station【Java】
题目描述134. 加油站AC代码暴力做法:class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { int n=gas.length; for(int i=0,j=0;i<n;i++){ int gas_left=0;//剩余的油 ...原创 2020-05-08 16:56:01 · 119 阅读 · 0 评论 -
LeetCode 402. Remove K Digits【Java】
题目描述402. 移掉K位数字AC代码 本题要移除的位数kkk是确定的,那么移除之后该数字的位数也是确定的,要想让它尽可能小,只需要让高位上的数字尽可能小,如果高位相同就让次高位尽可能小,依次类推得到最小的值。class Solution { public String removeKdigits(String num, int k) { LinkedList&l...原创 2020-05-08 16:55:26 · 181 阅读 · 0 评论 -
LeetCode 452. Minimum Number of Arrows to Burst Balloons【Java】
题目描述452. 用最少数量的箭引爆气球AC代码class Solution { public int findMinArrowShots(int[][] points) { if (points.length == 0) return 0; // 根据每个气球的结束坐标进行排序 Arrays.sort(points, new Comparator<int...原创 2020-05-08 16:54:27 · 151 阅读 · 0 评论 -
LeetCode 406. Queue Reconstruction by Height【Java】
题目描述406. 根据身高重建队列AC代码按照身高从大到小排序。身高相同,按照kkk从小到大的顺序排序。class Solution { public int[][] reconstructQueue(int[][] people) { //按照身高和k进行排序 Arrays.sort(people,new Comparator<int[...原创 2020-05-08 16:53:42 · 131 阅读 · 0 评论 -
LeetCode 376. Wiggle Subsequence【Java】
题目描述376. 摆动序列AC代码这道题可以转化成求波峰波谷的个数。class Solution { public int wiggleMaxLength(int[] nums) { int n=nums.length; if(n<2) return n; int pre=0,res=1; for(int i=1...原创 2020-05-08 16:53:02 · 96 阅读 · 0 评论 -
LeetCode 45. Jump Game II【Java】
题目描述45. 跳跃游戏 IIAC代码 在lc55的基础上,让我们求出跳到最后一个位置所花费的最少跳跃次数。class Solution { public int jump(int[] nums) { if(nums.length==1) return 0; int l=0,r=0,step=0; while(r...原创 2020-05-08 16:52:15 · 117 阅读 · 0 评论 -
LeetCode 55. Jump Game【Java】
题目描述55. 跳跃游戏AC代码 数组中的每个元素代表你在该位置可以跳跃的最大长度,此题让我们判断是否能到达最后一个位置。每一次跳跃的长度≤最大长度即可。比如给出的示例2:输入: [3,2,1,0,4]输出: false解释: 位置0上的元素是3,代表跳跃最大长度为3,我们无论跳跃1/2/3步,都会到达位置3,位置3的值是0,这就意味着到达不了最后一个位置。...原创 2020-05-08 16:50:32 · 131 阅读 · 0 评论 -
LeetCode 455. Assign Cookies【Java】
题目描述455. 分发饼干AC代码给一个孩子的饼干应当尽量小并且又能满足该孩子,这样大饼干才能拿来给满足度比较大的孩子。因为满足度最小的孩子最容易得到满足,所以先满足满足度最小的孩子。class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); ...原创 2020-05-08 16:46:05 · 94 阅读 · 0 评论 -
LeetCode 392. Is Subsequence【Java】
题目描述392. 判断子序列AC代码 给定两个字符串sss和ttt,问sss是不是ttt的子序列。子序列是可以不连续的,但是字串是需要连续的。通过两个指针遍历字符串s和字符串t,通过一个变量kkk来记录字符串ttt中和字符串sss相同的字符数量,如果最终kkk的大小和字符串sss相同,那么说明sss是ttt的子序列。class Solution { public boolean ...原创 2020-05-08 16:45:24 · 101 阅读 · 0 评论 -
LeetCode 860. Lemonade Change【Java】
题目描述860. 柠檬水找零AC代码 柠檬水售价5块钱,钱币面额只有5/10/20三种,其中如果需要找零的话实际上只需要5块钱或者10块钱,那么我们需要两个变量来存储这两种币值的个数。 其次找零的时候,我们要明确整钱优先,零钱其次的原则,比如有个人给了20块钱,第一想法应该是先找10然后找5块钱,而不是找3张5块的,为啥呢,十块钱的没了,我们可以...原创 2020-05-08 16:42:31 · 115 阅读 · 0 评论 -
常见位运算总结及LeetCode相关题目
文章目录常见的位运算**1.位操作实现乘除法****2.位操作交换两个数****3.位操作判断奇偶****4.位操作交换符号****5.位操作求绝对值****6.位操作进行高低位交换****7.位操作进行二进制逆序****8.位操作统计二进制中1的个数****9.a^b^b=a**相关题目**[231. 2的幂](https://leetcode-cn.com/problems/power-of-...原创 2020-05-07 17:00:39 · 473 阅读 · 0 评论 -
LeetCode 279. Perfect Squares【Java】
题目描述279. 完全平方数AC代码第一种做法:DPf[i]f[i]f[i]表示平方数组成 iii所需要的最少数量。class Solution { public int numSquares(int n) { int f[]=new int[n+1]; for(int i=1;i<=n;i++) f[i]=n; ...原创 2020-05-06 22:11:53 · 106 阅读 · 0 评论 -
LeetCode 210. Course Schedule II【Java】
210. 课程表 IIAC代码本题和207.课程表类似,不过要求让我们输出排课的顺序,也就是拓扑序列了。在这里返回结果的时候注意,如果这是个有环的图,那么答案数组返回的应该是空数组,之前我没注意,当样例如下时:2[[0,1],[1,0]]返回的结果是[0,0],实际上应该是空数组。为了解决这个问题我们可以和207题一样,通过cnt来计数,最终和课程数相同的话,就返回答案数组否则返回空...原创 2020-05-06 17:12:40 · 151 阅读 · 0 评论 -
LeetCode 207. Course Schedule【Java】
题目描述207. 课程表AC代码题目需要解决的问题是:给定课程总量以及它们的先决条件,判断能不能学完这些课。啥时候这个排课表没法进行呢,如果学课程A之前必须学B,学课程B之前必须学A,那这样的话课表是不可能拍出来的,所以这个问题可以转化为看看存不存在一个环的问题。学课程B之前必须学A,这样的关系有一个前驱有一个后继,我们可以认为是有一个方向存在的,如果这个课表可以被排出来,那么各门课程应该...原创 2020-05-06 17:07:49 · 158 阅读 · 0 评论 -
LeetCode 542. 01 Matrix【Java】
题目描述542. 01 矩阵AC代码class Solution { public int[][] updateMatrix(int[][] matrix) { Queue<int[]> q=new LinkedList<>(); int n=matrix.length,m=matrix[0].length; /...原创 2020-05-06 16:47:05 · 177 阅读 · 0 评论 -
LeetCode 130. Surrounded Regions【Java】
题目描述130. 被围绕的区域AC代码class Solution { int n,m; boolean[][] vis; public void solve(char[][] board) { if(board.length==0) return; n=board.length;m=board[0].lengt...原创 2020-05-06 16:46:16 · 184 阅读 · 0 评论