随笔分类 - 算法
摘要:linkedlist 既实现了 list 接口,又实现了 queue, deque 接口, 底层用链表数据结构,便于增删元素和顺序迭代 arraydeque 实现了 queue和deque接口 , 底层用数组实现,便于查找 arraylist 实现list接口,底层为数组
阅读全文
摘要:1. 使用list, 调整的时候list可以删除尾部的元素 ArrayList<Integer> list = (ArrayList<Integer>)Arrays.stream(a).boxed().collect( Collectors.toList()); //大根堆 buildHeap(li
阅读全文
摘要:因为堆结构只保证 根节点比双子节点都大或小 1 求最小的n个数: 构建n个数的大顶堆,依次弹出堆顶再往下调整(用例省略) 2 求最大的n个数: 构建n个数的小顶堆,依次弹出堆顶再往下调整(用例省略) 3 求第n大的数: 构建所有元素的大顶堆,依次弹出堆顶,堆底放到堆顶并向下调整,重复n次 用例: p
阅读全文
摘要:1 左右哨兵等于pivot的情况要接着走,不然有可能一直不动,无限循环 2 需要先走右指针再走左指针,因为pivot在最左侧,最终停留点应该比pivot小,这样交换后小的在前; 如果左侧先走,最终停留点比pivot大 3 迭代下一轮循环的时候,不要包括相遇点,因为这个点前面都比它大,后面都比它小,不
阅读全文
摘要:private void buildHeap(int[] h) { int l = h.length; //这里需要从下向上调整,因为从上向下调整只能让最小值下到底端,只有从下向上调整可以让最大值上到顶端 //shiftDown需要递归,如果不递归,这里只能保证最大的元素在堆顶,但是不能保证子分支都
阅读全文
摘要:堆是 完全二叉树, 不一定是满二叉树, 可以用数组存放(普通二叉树只能用带指针的链表) i 节点的父节点 下标为 i/2 , 子节点下标为 2i , 2i+1 , 二叉树高度或深度为 logN+1(计算机领域底数为2)
阅读全文
摘要:PriorityQueue的底层实现是 堆, 默认为最小堆: PriorityQueue<Integer> q = new PriorityQueue<>(); 最大堆初始化: PriorityQueue<Integer> q = new PriorityQueue<>((o1, o2)->o2.c
阅读全文
摘要:public String LCS (String str1, String str2) { int max = 0; //存储中间值 int[][] p = new int[str1.length()][str2.length()]; StringBuilder temp = new String
阅读全文
摘要:方法一 递归 import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param cost int整型一维数组 * @return int整型 */ public in
阅读全文
摘要:import java.util.*; public class Solution { private int res; public int Nqueen (int n) { res = 0; //下标为行号,元素为列号,记录皇后位置 int[] pos = new int[n]; Arrays.
阅读全文
摘要:import java.util.*; import java.math.*; public class Solution { HashSet<Integer> res = new HashSet<Integer>(); //已经摆放几个 int leng = 0; //多少种摆法 int coun
阅读全文
摘要:import java.util.*; import java.math.*; public class Solution { TreeSet<Integer> ready = new TreeSet<Integer>(); HashSet<Integer> res = new HashSet<In
阅读全文
摘要:描述 N 皇后问题是指在 n * n 的棋盘上要摆 n 个皇后,要求:任何两个皇后不同行,不同列也不在同一条斜线上,求给一个整数 n ,返回 n 皇后的摆法数。 数据范围: 1 \le n \le 91≤n≤9 要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n!)O(n!) 这里矩阵元素在一
阅读全文
摘要:方式一: private void sub(char[] array, char[] temp, ArrayList<String> resList) { for (int i = 0; i < array.length ; i++) { if (temp[i] != 0) { continue;
阅读全文
摘要:代码: @Test public void solve() { int i, j = 0; char[][] grid = new char[5][5]; Map<String, Integer> pass = new LinkedHashMap<String, Integer>(); dfs(gr
阅读全文
摘要:数组全排列 private void write(int[] b, ArrayList<ArrayList<Integer>> list, LinkedList<Integer> item) { boolean flip; if (item.size() == b.length) { list.ad
阅读全文
摘要:当递归方法为返回void时,没有return语句。 所以当递归方法有多个 递归调用点时, 只用一处或0处 return语句就可以, 方法语句运行完会自动返回。
阅读全文
浙公网安备 33010602011771号