自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 leetcode59-螺旋矩阵2

题目描述给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。题目分析确定边界值与前进方向即可Java代码public int[][] generateMatrix(int n) { int[][] res = new int[n][n]; int[] x_dir = new int[]{0,1,0,-1}; ...

2020-04-15 14:38:39 137

原创 leetcode56-合并区间

题目描述给出一个区间的集合,请合并所有重叠的区间。Java代码public int[][] merge(int[][] intervals) { LinkedList<int[]> list = new LinkedList<>(); Arrays.sort(intervals, Comparator.comparingInt(x-&g...

2020-04-15 13:35:21 114

原创 leetcode54-螺旋矩阵

题目描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。题目分析这个题目重要的是怎么控制方向Java代码public List<Integer> spiralOrder(int[][] matrix) { List<Integer> res = new ArrayList<>();...

2020-04-08 16:12:43 125

原创 leetcode50-Pow(x,n)

题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数。题目分析使用快速幂计算Java代码public double myPow(double x, int n) { double res = 1.0; for(int i = n; i != 0; i /= 2){ if(i % 2 != 0){ ...

2020-04-08 13:12:26 96

原创 leetcode46-全排列

题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。题目分析全排列全部打印,其实就是使用第一个数字与后面的数字相互交换位置,然后再将剩余的n-1个数字继续进行全排列Java代码 public List<List<Integer>> permute(int[] nums) { List<List<Integer>>...

2020-04-05 13:13:14 82

原创 leetcode-42 接雨水

题目描述题目代码栈的使用public int trap(int[] height) { if(height==null || height.length==0){ return 0; } int res = 0; Stack<Integer> s = new Stack<>();...

2020-04-02 20:42:53 112

原创 leetcode-40 组合总和2

题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。题目代码List<List<Integer>> res = new ArrayList&...

2020-04-02 15:16:51 73

原创 leetcode-39 组合总和

题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。题目代码List<List<Integer>> res=new ArrayL...

2020-04-02 15:04:11 114

原创 leetcode34-在排序数组中查找元素的第一个和最后一个位置

题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。题目代码public int[] searchRange(int [] array , int k) { int start = 0; i...

2020-03-31 17:32:49 125

原创 leetcode33 - 搜索旋转排序树组

题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。题目代码public int search(int[] nums...

2020-03-31 17:11:53 99

原创 leetcode31 - 下一个排列

题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。题目代码public void nextPermutation(int[] nums) { int i = nums.length-2; // 1.从后往前...

2020-03-31 16:13:18 72

原创 leetcode每日一题-水壶问题

题目描述有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空题目分析该题可使用数学方法求解,我们每一次操作只能倒满x,y或者清空x,y,若干次操作之后得到z,那么我们可...

2020-03-21 13:02:20 750

原创 leetcode21-合并两个有序链表

题目描述使用一个头指针,改变两条链表的指向就可以使用O(1)的空间复杂度解决这个问题。Java代码public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head = new ListNode(0); ListNode p = head; while(l1!=null...

2020-03-15 20:38:27 114

原创 leetcode20-有效括号

题目描述模拟栈,注意栈空的情况Java代码public boolean isValid(String s) { Map<Character,Character> map = new HashMap<>(){{ put('(',')'); put('{','}'); put('[',...

2020-03-15 18:35:33 123

原创 leetcode每日一题-岛屿的最大面积

题目分析dfs即可,但是主要要使用沉岛思想(访问过的陆地变成水域,1变为0)java代码public int maxAreaOfIsland(int[][] grid) { if(grid==null || grid.length==0){ return 0; } int ret = 0; for(int...

2020-03-15 18:21:41 254 1

原创 leetcode-19 删除链表的倒数第N个节点

#题目描述1.先遍历一遍,计算链表长度,那么倒数k,就可以转化为整数n-k+1,那么找到n-k节点就是删除节点的前一个节点2.双指针,头指针前进k,尾指针开始前进,保持gap,那么头指针为空,尾指针就是删除节点的前一个节点java代码1public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dumm...

2020-03-14 21:31:53 110

原创 leetcode-18-四数之和

题目描述该题与三数之和相同,在外嵌一层循环即可,但是这个题目容易超时,需要在第一和第二层循环判断最大值和最小值与target的关系,来减少循环次数。Java代码public List<List<Integer>> fourSum(int[] nums,int target){ /*定义一个返回值*/ List<List<In...

2020-03-14 21:16:23 75

原创 leetcode每日一题- 最长上升子序列

题目分析一这个题目有两种解法,我们先来讨论最常见的动态规划的解法,我们用dp[i]表示i位置下最长的子序列的长度,那么在已知dp[0…i-1]的前提下,只要遍历前面的数组,找到num[i]>num[k] and max{dp[k]+1,dp[i]},k属于[0,i).用公式表示如下:dp[i]=max(dp[k]+1,dp[i]),k∈[0,i)&num[k]<num[i]...

2020-03-14 14:53:02 124

原创 leetcode-17- 数字号码的字母组合

题目分析使用递归调用的方式进行遍历,那么递归的规律是什么呢?要将字符串扩展,我们必须拿出一个数字然后将数字代表的字母添加到字符串之后,那么每拿出一个数字,我们将要添加3-4次循环,每次循环一个字母进原字符串,那么答案也就出来了。java代码Map<String,String> phone = new HashMap<String,String>(){{ ...

2020-03-13 22:03:54 558

原创 leetcode每日一题 - 多数元素

题目分析只要一个元素的数量多于其他元素,那么在“对对碰”环节一定会生存下来这个题目一定有解,如果没有解的情况,需要使用time在进行一次判断如果是三个元素,就使用两个标志Java代码public int majorityElement(int[] nums) { int time = 1; int number = nums[0]; f...

2020-03-13 19:46:17 110

原创 leetcode每日一题 - 字符串的最大公因子

题目分析需要知道一个性质:如果 str1 和 str2 拼接后等于 str2和 str1 拼接起来的字符串(注意拼接顺序不同),那么一定存在符合条件的字符串 X。那么str由str1和str2产生,属于他们的子字符串,那么可以求str1和str2长度的最大公因子来获取这个子字符串。Java代码public String gcdOfStrings(String str1, String st...

2020-03-12 19:40:03 117

原创 leetcode每日一题 -将数组分为和相等的三个部分

题目分析和不被3整除的一定不行和可以被3整除的,有两个数组相等=sum/3,并且数组元素还有剩余即可其余均不符合Java代码public boolean canThreePartsEqualSum(int[] A) { int sum = 0; for(int i=0;i<A.length;i++){ sum += A[i...

2020-03-11 20:41:09 160

原创 leetcode-16 最接近的三数之和

题目分析这个题目与三数之和的题目非常类似,是同一个题目,只要记录最大的差值,然后返回就好了Java代码public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int span = Integer.MAX_VALUE; boolean flag = true;...

2020-03-10 22:59:05 69

原创 leetcode每日一题 -二叉树的直径

题目分析根据题目,我们可以转换思想到求二叉树的深度,其中左子树深度加上右子树深度就是二叉树某一个节点的直径,在这个过程中使用一个全局变量记录最大解即可。Java代码public int res; public int diameterOfBinaryTree(TreeNode root) { res = 0; depth(root); ...

2020-03-10 22:19:30 81

原创 leetcode-15 三数之和

题目分析该题目利用双指针加排序该题目的难点在于去除重复那么如何去除重复呢?除去重复的第一个元素i对于每一个i,除去重复的l和rJava代码public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList&...

2020-03-10 16:22:23 95

原创 leetcode-14 最长公共前缀

题目分析最长公共前缀,无非就是公共子串位于开头,那么我们就可以使用indexOf这个方法来寻找公共子串。逐个比较,然后截短公共子串即可。Java代码public String longestCommonPrefix(String[] strs) { if(strs.length<=0){ return ""; } ...

2020-03-10 14:29:55 63

原创 leetcode-13 罗马数字转整数

题目分析罗马数字转整数,其实就是如果一个字符比后面紧跟的字符小那么表示负数,其余表示正数,然后求和即可。java代码public int romanToInt(String s) { Map<Character, Integer> map = new HashMap<>(); map.put('I', 1); map.p...

2020-03-10 14:13:55 104

原创 leetcode-12 整数转罗马数字

题目分析使用贪心法去做,罗马数字就是尽可能的使用大数表示,那么我们从大到小安排数字就可以了。Java代码public String intToRoman(int num) { StringBuffer sb = new StringBuffer(); String[] romans = {"M","CM","D","CD","C","XC","L","XL",...

2020-03-10 14:02:39 68

原创 leetcode-11 盛水最多的容器

题目关键使用双指针解决这个问题:由于面积取决于边长短的那一端假设为m,所以要想得到比当前更大的面积,边长短的那一端必须舍弃,因为如果不舍弃,高最大就是m,而随着指针的移动宽会一直减小,因此面积只会越来越小。Java代码public int maxArea(int[] height) { int max_area = 0; int l = 0; ...

2020-03-09 18:46:21 64

原创 leetcode-10 正则表达式的匹配

java代码class Solution { public boolean isMatch(String str, String pattern) { if (str == null || pattern == null) { return true; } int strIndex = 0; int ...

2020-03-09 17:07:38 96

原创 leetcode9 回文数

Java代码public class isPalindrome_9 { public boolean isPalindrome(int x) { String s = String.valueOf(x); System.out.println(s); StringBuffer sb = new StringBuffer(s).reverse...

2020-03-09 15:11:19 87

原创 leetcode-8 字符串转换为整数

题目分析使用正则表达式与异常处理可以解决这个问题java代码import java.util.regex.*;class Solution { public int myAtoi(String string) { String str = string.trim(); /* ^[\\+\\-]?\\d+ ...

2020-03-09 14:44:05 71

原创 leetcode每日一题-买卖股票的最佳时机

题目分析使用一个变量记录前i天的最低售价,然后计算最大差值就好了Java代码public int maxProfit(int[] prices) { int max_prifit = Integer.MIN_VALUE; int minPrice = Integer.MAX_VALUE; for(int i=0;i<prices.leng...

2020-03-09 14:03:58 132

原创 leetcode7 - 整数反转

Java代码public int reverse(int x) { int rev = 0; while(x != 0){ int pop = x % 10; x = x / 10; //判定越界 // temp = rev*10 + pop i...

2020-03-06 18:46:47 106

原创 leetcode6 - Z字形变换

java代码方法1public String convert(String s, int numRows) { // 处理1 行的特殊情况 if (numRows == 1) return s; // 使用 新的空间保存非空行 List<StringBuffer> rows = new ArrayList<&gt...

2020-03-06 16:42:52 123

原创 leetcode5 最长回文子串

Java代码方法一public String longestPalindrome(String s) { if (s == null || s.length() < 1) return ""; int start = 0; int end = 0; for(int i=0;i<s.length();i++){ ...

2020-03-06 15:47:10 55

原创 leetcode-4寻找两个有序数组的中位数

题目描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。题目示例示例1nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例2nums1 = [1, 2]nums2 = [3, 4]则中位数是 (...

2020-02-29 15:32:23 139

原创 leetcode-3 无重复的最长子字符串

题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。题目示例题目分析如果S[i,j)不包含重复字符,s[j+1]不在[i,j)中,那么最长为[i,j+1),否则窗口从s[j’+1,j+1]重新开始计数,j’为字符重复位置。java代码public int lengthOfLongestSubstring(String s) { if(s == nu...

2020-02-28 14:47:59 97

原创 leetcode-2 两数相加

题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。题目示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ...

2020-02-28 13:53:56 108

原创 leetcode-1两数之和

题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题目分析使用...

2020-02-28 00:26:49 71

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除