随笔分类 - 算法
摘要:获取二进制最后一个1:x&-x 获取大于等于x的第一个2的次幂 private static int nextPow(int x) { x--; x |= x >> 1; x |= x >> 2; x |= x >> 4; x |= x >> 8; x |= x >> 16; x++; return
阅读全文
摘要:import java.util.Scanner; public class Main { private static void add(int[][] helper, int x1, int y1, int x2, int y2, int num) { helper[x1][y1] += num
阅读全文
摘要:详解 import java.util.Arrays; import java.util.Scanner; public class Main { /** * arr数组 [left, right] 区间每个元素加 num * @param helper * @param left * @param
阅读全文
摘要:import java.util.Scanner; public class Main { public static void sort(int [] arr,int left,int right) { if (left >= right) { return; } int m = (left +
阅读全文
摘要:链接 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 import java.util.LinkedList; class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if (k == 0)
阅读全文
摘要:链接 来源:牛客网 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序? import java.util.Scanner; import java.util.Stack; public class
阅读全文
摘要:使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和
阅读全文
摘要:一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。 用递归函数和栈逆序一个栈 import java.util.Scanner; import java
阅读全文
摘要:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 来源:力扣(LeetCode) 链接 著作权归领扣网络所有。商业转载请联系官
阅读全文
摘要:请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。 来源:力扣(LeetCode) 链接 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 import java.ut
阅读全文
摘要:public class BinarySearch { /** * 普通二分查找 * @param arr * @param key * @return */ private static boolean search(int[] arr, int key) { if (arr == null ||
阅读全文
摘要:/** * @Author Tianyiya H.T.W * @Date 2019/1/8 11:23 */ public class Main { private static int[][] matrixPow(int[][] x, int n) { int[][] one = new int[
阅读全文

浙公网安备 33010602011771号