链表

相交链表 总会相等的,要么在相交节点,要么在 public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode curA = headA


子串

和为k的子数组 这个前缀和后的hashmap操作有点难想到 class Solution { public int subarraySum(int[] nums, int k) { int res = 0; int length = nums.length;


矩阵

矩阵置零 class Solution { public void setZeroes(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; boolean[] r


双指针

移动零 如何控制双指针呢? [左指针,右指针)这里必须全为0 交换了后左指针往后移一位,右指针找下一个不为0的位置(保证1的成立),右指针到数组尾部结束 在遇到第一


普通数组

前缀和+贪心算法  class Solution {      public int maxSubArray(int[] nums) {          int preSum = 0;          int minPreSum = 0;          int res = Integer.M


滑动窗口

什么情况下会想到滑动窗口法: 任何题目如果没有思路其实都可以想一下暴力解法。这道题暴力解法思路简单: 遍历任意i,j,使得i和j之间的子串长度,等于p串的长度。该子串称之为x。该步复杂度为O(n)。 判断x是否与p是异位词。是的话,则把i加入答案中。该步复杂度为O(n)。 暴力法的复杂度为O


哈希

两数之和 输入 nums = [3,3],target = 6 输出 [0,1]