Leetcode打卡
念殊15
这个作者很懒,什么都没留下…
展开
-
695. 岛屿的最大面积
这道题和求岛屿数量的思路一样,在深度递归求面积的时候,在某个方向遇到1就+1class Solution { int m = 0, n = 0; public int maxAreaOfIsland(int[][] grid) { if(grid == null || grid.length == 0){ return 0; } m = grid.length; n = grid[0].le.原创 2020-09-06 09:47:22 · 85 阅读 · 0 评论 -
1391 检查网络中是否存在有效路径
1.题目2.思路(深度优先遍历DFS)class Solution { int[][] grid; int m; int n; // 该目标是否走过 boolean[][] used; // grid[x][y]代表位置,它可以往哪里走,取决于街道的类型 // {{0, -1, 1}, {0, -1, 4}, {0, -1, 6}, {0, 1, 1}, {0, 1, 3}, {0, 1, 5}} 代表Street1的所有情况原创 2020-07-08 10:23:40 · 198 阅读 · 0 评论 -
面试题60:n个骰子的点数
1.题目2.解法1(递归法)一个骰子有for(i=1;i <=6;i++), 选择1个,剩余n-1个骰子,接着再选1个,剩余n-2,所以使用递归法来做public class Solution{ // 骰子面最大值 private int maxVal = 6; // 骰子的个数 private int number; // 包含和的数组 int[] pProbability; public void printProbabili原创 2020-06-15 19:57:06 · 377 阅读 · 0 评论 -
面试题 08.08. 有重复字符串的排列组合(回溯解法)
1.题目2.解法1(不需要交换元素)class Solution{ public String[] permutation(String s){ int len = s.length(); if(s == null || len == 0){ return new String[0]; } // 根据char对应得ASCII码进行排序 char[] charArr = s.toCharA原创 2020-05-14 10:41:01 · 395 阅读 · 0 评论 -
Leetcode 131. 分割回文串
1.题目2.解法1:(别人的)import java.util.ArrayList;import java.util.Deque;import java.util.List;public class Solution { public List<List<String>> partition(String s) { int len = s.length(); List<List<String>> res原创 2020-05-13 17:20:02 · 117 阅读 · 0 评论 -
1.6 如何判断一个较大的单链表是否有环,以及环入口点
1.题目判断一个单链表是否有环,并且环的入口是哪个结点2.解法public class Sort { /** * 方法功能:判断链表是否有环 * 输入参数: head 链表的头结点 * 返回值为null,无环,否则返回slow和fast相遇点的结点 */ public static Node isLoop(Node head){ if(head == null || head.next == null){原创 2020-05-11 11:18:47 · 123 阅读 · 0 评论 -
5404. 用栈操作构建数组
1.题目2.解答class Solution { public List<String> buildArray(int[] target, int n) { List<String> list = new ArrayList<>(); boolean flag = false; int count = 0; for(int i = 1; i <= n; i++){原创 2020-05-10 16:49:08 · 128 阅读 · 0 评论 -
1.5将单链表向右旋转k个结点
1.题目如何将单链表向右旋转k个位置。给定单链表1->2->3->4->5->6->7, k = 3,那么旋转后的单链表变为5->6->7->1->2->3->42.解法public class Sort { /** * 功能描述: 根据k的个数,将链表向右旋转k个位置 * 输入参数: 链表头结点 * 利用了寻找倒数第k个结点的知识 */ public static vo原创 2020-05-09 11:33:25 · 460 阅读 · 0 评论 -
1.4 如何对链表进行重新排序
2.代码public class Sort { /** * 方法功能:找出链表的中间结点,并从中间断成两段 * 输入参数:链表的头结点 * 返回值:链表的中间结点 */ // 1.slow走一步,fast走两步 public static Node findMiddleNode(Node head){ if(he...原创 2020-05-09 09:30:43 · 1041 阅读 · 0 评论 -
Leetcode 39 组合总和
使用的是回溯方法解决的解法class Solution { public List<List<Integer>> combinationSum(int[] candidates, int target){ // 判断不合法的情况 if(candidates == null || candidates.length == 0){ ...原创 2020-04-30 17:53:33 · 103 阅读 · 0 评论 -
Leetcode 247.中心对称数II
1.题目2.解法思路:如果n == 0,那么返回“” (空字符串)如果n == 1, 那么返回“0”, “1”, ”8“如果n == 2, 那么返回 “11” , “69”, “88”, “96”(这里不包含”00“的情况)如果n == 3, 那么返回 (这里包含”00“的情况,例如"1001")“1” + s + “1”“6” + s ...原创 2020-04-24 18:11:41 · 540 阅读 · 0 评论 -
Leetcode 91.解码方法
1.题目2.解法1(递归法)class Solution { public int numDecodings(String s){ char[] chars = s.toCharArray(); if(chars[0] == '0'){ return 0; } int count = decode...原创 2020-04-23 11:37:30 · 153 阅读 · 0 评论 -
Leetcode 279 完全平方数
class oneVal{ int res = 0; int count = 0; public oneVal(int r, int c){ res = r; count = c; }}class Solution { public int numSquares(int n) { int res...原创 2020-04-22 21:03:15 · 137 阅读 · 0 评论 -
卷积操作和池化操作(滑动窗口实现)
1.卷积操作输入的m、n代表图片长宽,a、b代表卷积核大小(n >=a, m >=b),这里没有用权重,在每个滑动窗口内求最大值。import java.util.Scanner;public class Main { public int[][] convolve(int[][] nums, int n, int m, int a, int b){ in...原创 2020-04-21 17:29:09 · 1476 阅读 · 0 评论 -
Leetcode 301 删除无效的括号
1.题目2.解法3.思路1、首先计算 ( 和 )的个数,确定需要删除的括号数(这时候知道要删除的是左、还是右)2、因为不知道具体是哪个括号该删除,那么每个括号就有两个选项(要么删除、要不不删)3、删除的次数必须是最小的,否则不会记录表达式(这个我看题目时,没注意到)4、不必等到最后递归完成,才可以确认表达式是否有效,我们可以在前期引入修剪。对于 )括号,如果之前已经没有匹配的 ( ...原创 2020-04-19 15:16:36 · 163 阅读 · 0 评论 -
Leetcode253 会议室II
1.题目2.解法package test;import java.util.Arrays;import java.util.PriorityQueue;import java.util.Scanner;class Interval{ int start = 0; int end = 0; public Interval(int start, int end) { thi...原创 2020-04-11 10:17:36 · 471 阅读 · 0 评论 -
Leetcode 239.滑动窗口最大值
1.题目2.解法1(双端队列) class Solution { private ArrayDeque<Integer> deque = new ArrayDeque<Integer>(); private int[] nums; public void cleanQeque(int i, int k) { // 滑动窗口得...原创 2020-04-05 16:55:40 · 91 阅读 · 0 评论 -
Leetcode 62 不同路径
1.题目2.解法class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; dp[0][0] = 1; for(int i = 0; i < m; i++) { dp[i][0] = 1; } for(int j = 0; j ...原创 2020-04-04 09:27:57 · 99 阅读 · 0 评论 -
Leets 739每日温度
1.题目2.解法import java.util.Scanner;import java.util.Stack;import java.util.stream.IntStream;// 求的是当前元素的最小值public class Main { public static void main(String[] args) { Scanner in = new...原创 2020-04-02 15:43:38 · 101 阅读 · 0 评论 -
Leetcode 25 K个一组翻转链表
1.题目2.解法/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode ...原创 2020-03-30 12:28:26 · 72 阅读 · 0 评论 -
有效的字母异位词 Leetcode 242(Java实现)
1.题目2.解法class Solution { public boolean isAnagram(String s, String t) { //利用ascall码,就可以知道数组下标的位置 // 26个字母,这个范围我们知道,所以直接可以开辟一个包含26个元素的数组 int[] arrCount = new int[26]; ...原创 2020-03-30 09:51:36 · 235 阅读 · 0 评论 -
1353. 最多可以参加的会议数目
1.题目2.解法1、先按照startDay进行排序,得到开始时间从早到晚的数组排列。2、接着将startDay相等的会议加入优先队列,弹出结束时间最早的会议。相同时间,结束时间最早的会议优先出列。class Solution { public int maxEvents(int[][] events) { // 按照开始时间对元素排序 Arrays...原创 2020-03-26 17:09:52 · 314 阅读 · 0 评论 -
Leetcode 108.将有序数组转换为二叉搜索树
1、题目2、解法class Solution { // 如果是奇数,选择最中间的值,如果是偶数,选择中间左边或者右边都是可以的 private int[] nums; public TreeNode build(int left, int right) { if (left > right ) return null; // 用这...原创 2020-03-09 19:21:20 · 71 阅读 · 0 评论 -
Leetcode 230.二叉搜索树中第k小的元素
1、题目2、解法1(递归法)1、错误的解法(递归使用的深度遍历DFS,不可能在–k==0处停止,所以以下这种方式不合理)2、正确的递归class Solution { public ArrayList<Integer> inorder(TreeNode t, ArrayList<Integer> arr) { if (t == null)...原创 2020-03-09 18:16:20 · 131 阅读 · 0 评论 -
Leetcode 75 颜色分类
一、题目二、解法1(笨方法)初时,想的是走两趟class Solution { public void sortColors(int[] nums) { int i = 0; int tmp = 0; for (int k = 0; k < nums.length; k++) { if (nu...原创 2020-03-07 23:04:36 · 70 阅读 · 0 评论 -
Leetcode 322 零钱兑换
一、题目解法一 (暴力法,超出时间限制)public class Solution {private int maxValue = 1000;private int[] coins;public int search(int part) { if (part == 0) return 0; if (part < 0) return maxValue; in...原创 2020-03-06 20:31:42 · 79 阅读 · 0 评论 -
198. 打家劫舍
1.题目2、解法每个点,往后找的话,有的抢劫了,有的没有,最大抢劫数量是n,有n个点,所以时间复杂度为O(n^2),空间复杂度为O(n),result占n,栈存储占n3、思考看一下动态规划总结...原创 2020-02-24 20:24:21 · 64 阅读 · 0 评论 -
55.跳跃游戏
1.题目2.解法原创 2020-02-23 11:57:42 · 88 阅读 · 0 评论 -
53.最大子序和
1.题目2.解法时间复杂度为O(n), 空间复杂度为O(1)3.思考使用的是动态规划的方法,dp[i-1]的状态定下,dp[i]=max[dp[i-1]+nums[i], nums[i]),这里可以将nums[i]取代,因为我要求最大值。@1:因为要连续,所以一个接一个计算该段最大值,max(nums[i]+nums[i-1], nums[i]),要取nums[i]+nums[i...原创 2020-02-22 10:03:35 · 97 阅读 · 0 评论 -
54.螺旋矩阵
1.题目2.解法在这里插入代码片原创 2020-02-22 09:06:43 · 72 阅读 · 0 评论 -
50.Pow(x,n)
1.题目说明值得是x,n输入的范围,所以没有异常情况2.解法时间复杂度O(logn), 空间复杂度O(logn),因为一直在除2,直到03.思考快速幂算法(循环):@1:利用奇偶,从n==1,x,然后平方计算@2:当n为-2^31转为正数时会越界,所以转换为long类型...原创 2020-02-20 22:22:19 · 86 阅读 · 0 评论 -
38.外观数列
1.题目2.解法class Solution { public String countAndSay(int n) { String res = "1"; // 总共有n个字符串 for (int k = 2; k <=n; k++) { StringBuffer buf = new StringBuffer(); int count = 1; ...原创 2020-02-20 12:25:57 · 181 阅读 · 0 评论 -
41.缺失的第一个正数
1.题目2.解法class Solution { public int firstMissingPositive(int[] nums) { int len = nums.length; // 先提前确定是否有1 int count = 0; for (int i = 0 ; i < len ; i++) ...原创 2020-02-20 11:35:34 · 88 阅读 · 0 评论 -
49. 字母异位词分组
1.题目2.解法class Solution { public List<List<String>> groupAnagrams(String[] strs) { HashMap<String, List<String>> hash = new HashMap<>(); for (in...原创 2020-02-19 21:12:08 · 79 阅读 · 1 评论 -
48. 旋转图像
1.题目2.解法原创 2020-02-19 20:26:01 · 71 阅读 · 0 评论 -
46.全排列
1.题目2.解法class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> aList = new LinkedList(); ArrayList<Integer> tru...原创 2020-02-18 21:20:02 · 111 阅读 · 0 评论 -
44.通配符匹配
1.题目2.解法时间复杂度为O(mn),m\n为两个字符的长度,空间复杂度也为O(mn)3.思考1、使用的是动态规划法(速度很慢),dp的[i][j]状态都由前一个状态确定,所以都得判断2、...原创 2020-02-17 22:19:00 · 142 阅读 · 0 评论 -
42.接雨水
1.题目2.解法时间复杂度为O(n),空间复杂度为O(n)3.思考1、left_max,可以从i和i-1 邻近计算从左到右最大值。2、left_right, 可以从j和j+1邻近计算从右到左最大值。3、实际能够存储多少水,取决于,min(left_max[i], right_max[i]) - height[i], i 的范围是1到size-2,因为左右两边有柱子才能盛...原创 2020-02-17 20:53:04 · 72 阅读 · 0 评论 -
36.有效的数独
1.题目去看示例的输入输出2.解法class Solution { public boolean isValidSudoku(char[][] board) { // 行列子数独创建HashMap HashMap<Integer, Integer>[] rows = new HashMap[9]; HashMap<I...原创 2020-02-15 18:56:58 · 85 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
1.题目2.解法class Solution { public int[] searchRange(int[] nums, int target) { int start = 0; int end = nums.length-1; int result[] = {-1,-1}; if(nums.length==0) r...原创 2020-02-12 18:32:54 · 85 阅读 · 0 评论