leetcode
咖啡的假期
记录自己的技术成长之路
展开
-
LeetCode 46
解题思路: 本题是一个典型的回溯问题, 回溯体遍历的时候每次只要交换当前索引和第i个索引就可以 class Solution { List<List<Integer>> totlelist = new ArrayList<> (); public List<List<Integer>> permute(int...原创 2019-03-26 08:08:20 · 97 阅读 · 0 评论 -
leetcode --动态规划
题目1 . 字符串正则匹配 https://leetcode.com/problems/wildcard-matching/ 题目概述:s是字符串,p是匹配符号。 ?和*是两种匹配模式,?匹配单字符,*匹配任意字符串或空。判断 s和p是否匹配。 题解: 采用动态规划的思想,当两个字符串相等的或者p为'?'的时候,dp[i][j] = dp[i-1][j-1] 表示 p串的i和s串的j...原创 2019-04-09 08:50:35 · 111 阅读 · 0 评论 -
leetcode -- 贪心
题目1 .汽车加油 https://leetcode.com/problems/gas-station/ 题目描述,gas数组为每个站可以加油的量,cost数组为每个站到下一站的耗费。 题解: curGas += gas[i] -cost[i] 统计目前还剩油量,如果小于0则表示在i之前的所有站点都不可能是起点(因为累加到现在有负了),start = i+1,curGas清0. ...原创 2019-04-09 10:37:50 · 183 阅读 · 0 评论 -
leetcode -- 二进制
题目 1. https://leetcode.com/problems/add-binary/ 题目简介:两个二进制字符串,求他们的和,也用二进制表示 题解:首先把两个字符串中长的赋值x,短的y。 对短的y逆序遍历,将x与y后面几位分别相加值存起来,暂时不进位。得到新字符串C, 对C进行进位处理,弄一个进位标识符。 class Solution { public Strin...原创 2019-04-16 09:55:22 · 110 阅读 · 0 评论 -
leetcode-- 分治(递归)
题目1. 求 Pow(x,n) https://leetcode.com/problems/powx-n/ 题目简介: 求pow(x,n) ,时间复杂度要小。 题解:首先 n可能有正负,所以分两种情况处理return 1/ Pow(x,-n,map); 和 return Pow(x,n,map); 在计算pow的时候 根据n是奇数或者是偶数来进行分治。用map记录已经计算过的值,减...原创 2019-04-16 11:59:51 · 124 阅读 · 0 评论 -
leetcode -- 链表
题目1. 链表节点位置调整 https://leetcode.com/problems/partition-list/submissions/ 题目简介:输入一个链表和一个值x, 所有小于x的值应该放在大于x的值前面,且所有值相对顺序不变。 题解:给链表加一个头结点,链表从头遍历,记录下第一个大于等于x的值的节点node的前置节点pre,从node往后遍历,凡是小于x的就取出来插入到p...原创 2019-04-14 12:16:24 · 149 阅读 · 0 评论 -
leetcode -- 二分查找
题目1. 旋转数组的二分查找 https://leetcode.com/problems/search-in-rotated-sorted-array/ 题目简介:一个有序数组,但是经过了旋转, 给一个数字,找到这个数字在数组中位置。 题解:标准二分查找 class Solution { public int search(int[] nums, int target) {...原创 2019-04-17 10:02:48 · 135 阅读 · 0 评论 -
leetcode -- 排序
题目1 .链表合起来(单链表使用归并,双向链表用快排) https://leetcode.com/problems/merge-two-sorted-lists/ 题目简介: 把两个有序链表合起来 题解:略 /** * Definition for singly-linked list. * public class ListNode { * int val;...原创 2019-04-17 10:32:37 · 95 阅读 · 0 评论 -
leetcode -- LRU
题目 实现 LRU https://leetcode.com/problems/lru-cache/ 题目大意 : 实现LRU 插入以及删除 题解:用HashMap + 双向带头尾节点的链表 或 LinkedHashMap public class ListNode{ int key; int val; ListNode pre; Li...原创 2019-04-17 11:37:56 · 812 阅读 · 0 评论 -
leetcode -- 数组
题目1 .原地删除数组中出现的val元素 题目简介:原地删除数组中val元素,额外空间为O(1) 题解:这道题思路就是用一个index记录应该放在哪里。遍历数组有val的index不变,没有val的正常赋值给num[index++] = num[i]; class Solution { public int removeElement(int[] nums, int val) ...原创 2019-04-19 10:53:03 · 88 阅读 · 0 评论 -
leetcode -- 大数运算
题目1. 用数组表示的大数加1 https://leetcode.com/problems/plus-one/ 题目简介:数组表示的大数加1 题解:应用进位器 addtemp ,从数组尾部开始向头部加,当进位到头的时候进位器还为1的话就要数组扩容然后首位置1. class Solution { public int[] plusOne(int[] digits) { ...原创 2019-04-24 09:43:53 · 1088 阅读 · 0 评论 -
leetcode -- 树
题目1. 判断两个树是否相同 题目简介:判断两树是否相同 题解:递归判断左右子树,注意边界条件的判断 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNo...原创 2019-04-12 09:34:24 · 88 阅读 · 0 评论 -
LeetCode -- 回溯
题目1. 列出所有子集 https://leetcode.com/problems/subsets/ 题意简介: 给定一个集合,给出所有子集。 题解:标准回溯问题,不过要注意有可能出现子集重复问题,所以最好先排个序,然后当相邻两个数相同时还要注意判断条件。 class Solution { List<List<Integer>> answerLi...原创 2019-04-12 09:27:39 · 137 阅读 · 0 评论 -
LeetCode 461
解题思路:计算汉明距离其实就是计算二进制中有几个位不同, 只需将两个数进行异或操作,得到的新二进制数就是两者不同的位置,然后统计新得到的数的1的个数(每次与1相与,结果为1则计数器加1, 然后右移) class Solution { public int hammingDistance(int x, int y) { int z = x^y; int...原创 2019-03-26 08:16:50 · 223 阅读 · 0 评论 -
LeetCode 62
解题思路:这是一道很简单的动态规划题,关键思路就是 dp[i][j] = dp[i-1][j]+dp[i][j-1] ,还有就是dp[1][1] = 1;一个位置的所有可能路径只有可能从左边或上面过来,那把两个方向的可能值相加就好; class Solution { public int uniquePaths(int m, int n) { int[][] ...原创 2019-03-26 08:27:39 · 89 阅读 · 0 评论 -
leetCode 312
https://leetcode.com/problems/burst-balloons/ https://leetcode.com/problems/burst-balloons/discuss/76245/Easiest-Java-Solution 解题思路:这道题解题方法很巧,突破点为最终留下的数,他的左边是 start -1 右边是 end+1 , i两边叠加的值分别是 st...原创 2019-03-26 09:29:24 · 271 阅读 · 0 评论 -
LeetCode 52
解题思路: 先将头部排序,头部相同的按照尾部排序。 以第一个的头尾为start,end ,然后遍历,如果前一个的尾部和后一个的头部重叠,则重新写start和end为最大范围。 /** * Definition for an interval. * public class Interval { * int start; * int end; * In...原创 2019-03-24 12:55:36 · 164 阅读 · 0 评论 -
Leetcode 32
解题思路:这是一个统计最大匹配括号的题目,建议用栈的思想,本题的一个巧妙的解法在于压入栈的不是符号,而是符号所属的序号,这样可以利用序号相减来确定匹配的深度。 public class Solution { public int longestValidParentheses(String s) { LinkedList<Integer> stack =...原创 2019-03-24 15:35:26 · 75 阅读 · 0 评论 -
LeetCode 81
https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ 解题思路:思路就是一个变形的二分查找,只不过要先找到中间降序的那个点,如果存在则分左右两边分别二分查找,如果不存在降序点,则直接二分查找 class Solution { public boolean search(int[] nums, int ta...原创 2019-03-24 16:51:21 · 105 阅读 · 0 评论 -
LeetCode 48
https://leetcode.com/problems/rotate-image/ 解题思路: 要让矩阵顺时针旋转90度,只需先让矩阵沿着对角线交换,然后再每行逆序就可以得到 class Solution { public void rotate(int[][] matrix) { if(matrix.length <=1)return; ...原创 2019-03-24 17:11:43 · 96 阅读 · 0 评论 -
leetcode--普通题
题目1 . 输出螺旋矩阵 https://leetcode.com/problems/spiral-matrix/ 题目描述:顺时针方向输出螺旋矩阵,逐步螺旋进中心, 将元素按此顺序输出 题解: 略 class Solution { boolean[][] A= null ; List<Integer> list = new ArrayList<...原创 2019-04-10 10:43:46 · 120 阅读 · 0 评论 -
LeetCode 84
https://leetcode.com/problems/largest-rectangle-in-histogram/ 解题思路:本体思路清奇,利用栈来维护一个数的左右边界。这种算法的思想是维护一个递增的栈,这个栈保存了元素在数组中的位置。 这样在栈中每一个左边的bar都比本身小,所以左边就天然有界了,也就是左边界就是左边的一个bar。遍历一遍height数组,在将height数组入栈的...转载 2019-03-29 10:47:42 · 241 阅读 · 0 评论 -
leetcode -- 栈
题目1. https://leetcode.com/problems/gray-code/ 题目简介: 输入一个数字表示二进制的位数,输出所有可能,注意相邻的两个二进制数字之间只能差一位,以0为开始。 题解:观察序列变化,发现一个规律,每次都将已有的list翻转然后在最高位上加1,增加进list。 就可以了。 class Solution { public List<...转载 2019-04-12 09:09:31 · 159 阅读 · 0 评论 -
leetcode -- 树
题目一.之字形遍历树 https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ 题目简介:之字形遍历树 题解: 用队列的方式,这里用到双端队列 Deque; /** * Definition for a binary tree node. * public class TreeNode { ...原创 2019-04-24 10:29:22 · 152 阅读 · 0 评论