code螺旋矩阵
原题链接:https://leetcode.cn/problems/spiral-matrix/
1234567891011121314151617181920212223242526272829303132333435363738/** 右下左上 */class Solution { // 注意一下坐标就行了 程序中的坐标系会与传统理解坐标系有些不同 public int [] dx = new int [] {0,1,0,-1}; public int [] dy = new int [] {1,0,-1,0}; public List<Integer> spiralOrder(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; boolean [][] vis = new boolean [m][n]; ArrayList<Integ ...
code最大子数组和
字节校招 2面
原题链接:https://leetcode.cn/problems/maximum-subarray/
原题链接:
12345678910111213141516// f[i]表示以i结尾的 前i个 数组中 最长子序列和class Solution { public int maxSubArray(int[] nums) { int n = nums.length; int [] f = new int [n + 1]; int ans = Integer.MIN_VALUE; for(int i = 1 ; i <= n ; i++){ f[i] = Math.max(nums[i - 1],f[i - 1] + nums[i - 1]); ans = Math.max(f[i],ans); } return ans; }}
code安排电影院座位
华为校招主管面
原题链接:https://leetcode.cn/problems/cinema-seat-allocation/description/
12345678910111213141516171819202122232425262728293031323334353637class Solution { private int left = 0b11110000; private int middle = 0b11000011; private int right = 0b00001111; public int maxNumberOfFamilies(int n, int[][] reservedSeats) { HashMap<Integer,Integer>hash = new HashMap<>(); for(int i = 0; i < reservedSeats.length ; i++){ int row = reserved ...
算法模板-动态规划
序列DPleetcode 674 最长连续递增序列原题链接:https://leetcode.cn/problems/longest-continuous-increasing-subsequence/description/
12345678910111213141516171819202122/** f[i] 以i结尾 长度最长的连续递增子序列 本题要求的是 最长连续递增子序列 连续 说明 f[i] 的状态只能由f[i - 1]转移而来 */class Solution { public int findLengthOfLCIS(int[] nums) { int n = nums.length; int [] f = new int [n]; Arrays.fill(f,1); int ans = 1; for(int i = 1 ; i < n ; i++){ if(nums[i] > nums[i -1] ) ...
code最小路径和
leetcode 64 最小路径和
原题链接https://leetcode.cn/problems/minimum-path-sum/
123456789101112131415161718192021222324252627class Solution { public int minPathSum(int[][] grid) { int n = grid.length; int m = grid[0].length; int [][] dp = new int [n][m]; dp[0][0] = grid[0][0]; for(int i = 0; i < n ; i++){ for(int j = 0 ; j < m ; j++){ if(i == 0 && j == 0){ continue; } ...
code岛屿数量
原题链接:https://leetcode.cn/problems/number-of-islands/
法1: BFS1234567891011121314151617181920212223242526272829303132333435363738394041class Solution { public static int [] dx = new int[]{0,-1,0,1}; public static int [] dy = new int[]{-1,0,1,0}; public static int n,m; public int numIslands(char[][] grid) { n = grid.length; m = grid[0].length; int ans = 0; for (int i = 0 ; i < n ; i++){ for (int j = 0; j < m ...
code二叉树的序列化与反序列化
原题链接:https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/
法1 dfs写法1 重构时使用cur进行标记 会快一些
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Codec { // Encodes a tree to a single string. /* * 前序遍历 序列化编译为字符串 * ...
java集合
集合基本使用集合与数组
ArrayListArrayList成员方法
代码示例
12345678910111213141516171819202122232425262728293031323334353637383940414243import java.util.ArrayList;public class Main { public static void main(String[] args) { // 1. 创建集合的对象 // 泛型 限定集合中存储数据的类型 // JDK7 之前的写法// ArrayList<String> list = new ArrayList<String>(); // JDK7 后的写法 // 此时我们创建的是Arraylist的对象 而对象ArrayList是java已经写好的一个类 // 这个类在底层做了一些处理 // 打印对象不是地址值 而是集合中存储数据内容 // 在 ...
算法模板BFS
基础知识:常见的BFS用来解决什么问题?(1) 简单图(有向无向皆可)的最短路径长度,注意是长度而不是具体的路径(2)拓扑排序 (3) 遍历一个图(或者树)BFS基本模板(需要记录层数或者不需要记录层数)多数情况下时间复杂度空间复杂度都是O(N+M),N为节点个数,M为边的个数
面试推荐题单https://zhuanlan.zhihu.com/p/349940945
基于树的BFS:不需要专门一个set来记录访问过的节点leetcode 102 二叉树的层序遍历原题链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...
leetcode318最长长度乘积
原题链接:https://leetcode.cn/problems/maximum-product-of-word-lengths/description/
解法1: 简单位运算模拟12345678910111213141516171819202122232425262728class Solution { public int maxProduct(String[] words) { HashMap<Integer,Integer> hash = new HashMap<>(); for(var ss : words){ int t = 0; for(int i = 0 ; i < ss.length() ; i++){ int u = ss.charAt(i) - 'a'; t |= (1 << u); } ...