随笔分类 - Leetcode刷题
摘要:传送门 /** * 分治 */ class Solution { // dp[i]:表示以i为结尾满足条件的子串的长度 public int longestSubstring(String s, int k) { int len = s.length(); return dfs(s, 0, len
阅读全文
摘要:华为笔试第三题,二叉树的建树过程也要自己写哈 这里记录一下哈,用的递归的写法 import java.util.*; import java.io.*; public class Main { static Map<String, Integer> map; // 查看是否存在重复子树 static
阅读全文
摘要:链接 // 组合数问题:C(m+n-2, m-1) class Solution { public int uniquePaths(int m, int n) { long numerator = 1; // 防止分子乘法溢出 int denumerator = m-1; int tx = m-1;
阅读全文
摘要:第二题:给你一串由小写字母构成的字符串,若字符串中两个字符相同,你可以将其标记并得分,得分为两个字符在字母表中的位置(从1开始)之和;若两个字符在字母表中相邻,也可以将其标记,例如ab相邻,yx相邻。每个字符只能被标记一次,返回所能取得的最高分。 import java.util.*; public
阅读全文
摘要:一个字符串可以划分为多个若干的子串,求所有子串的贡献和。子串的贡献可以表示:对于偶数个的字母,贡献为1,对于奇数个的字母,贡献为-1; eg. 子串cbb的贡献为-1 + 1 = 0 import java.util.Arrays; import java.util.Scanner; // 动态规划
阅读全文
摘要:/** * 输入数组的元素只能为 1或-1 * 求解乘积为1的子串 * 4 * 1 1 -1 -1 * 10 * // 前缀积 * public static void main(String[] args) { * Scanner sc = new Scanner(System.in); * in
阅读全文
摘要:https://leetcode-cn.com/problems/network-delay-time/submissions/ // n <= 100 class Solution { int N = 105, M = 6005; // (邻接表-链式前向星) int[] w = new int[
阅读全文
摘要:一、翻转链表 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val =
阅读全文
摘要:import java.util.*; import java.lang.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.n
阅读全文
摘要:class Solution { static final int MOUSE_WIN = 1; static final int CAT_WIN = 2; static final int DRAW = 0; int n; int[][][] dp; // dp[mouse][cat][turns
阅读全文
摘要:class Solution { public boolean canBeValid(String s, String locked) { int len = s.length(); int numRight = 0, numLeft = 0; // numRight表示不可改变的右括号的数量,nu
阅读全文
摘要:class Solution { // set判断原料是否存在 Set<String> supplySet = new HashSet<>(); // 已有的材料 Map<String, List<String>> map = new HashMap<>(); Map<String, Boolean
阅读全文
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
阅读全文
摘要:public int strStr(String ss, String pp) { if (pp.isEmpty()) return 0; // 分别读取原串和匹配串的长度 int n = ss.length(), m = pp.length(); // 原串和匹配串前面都加空格,使其下标从 1 开
阅读全文
摘要:总结一下: 1、数组中的数不重复,最简单的情况 1、最普通的二分查找:leetcode704 /** * 二分查找:nums 中的所有元素是不重复的 */ class Solution { public int search(int[] nums, int target) { int left =
阅读全文
摘要:// LRU缓存机制 // 使用哈希表+双向链表 // 双向链表的头部是最近使用过的,双向链表的尾部是最久未使用过的 class LRUCache { // 双向链表的节点 class DoublyLinkedNode { int key; int value; DoublyLinkedNode p
阅读全文
摘要:1、寻找链表的中点 // 找到链表的中点(快慢指针) public ListNode getMidNode(ListNode head) { ListNode slow = head; ListNode fast = head; while (fast.next != null && fast.ne
阅读全文
摘要:注意一些关于链表的常用操作 1、寻找链表的中间节点(快慢指针) 2、合并两个有序链表(哨兵节点的使用) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * L
阅读全文
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 递归的做法: 对于根节点来说,要判断根节点的左右子树是不是平衡的二叉树以及,左右子树的高度差的绝对值是否不超过1 /** * Definition f
阅读全文

浙公网安备 33010602011771号