微软刷题
微软刷题
云养猫v2
这个作者很懒,什么都没留下…
展开
-
判断一个字符串是否为某一单个字串的重复,比如ABABABAB,如果是输出AB4,如果不是输出null
aaaa -> a4public String repeatedSubstringPattern(String s) { if (s == null || s.length() == 0) return null; int len = s.length(); for (int i = 1; i <= len/2; i++) { if (s.charAt(i-1) != s.charAt(len-1)) continue;原创 2020-06-16 10:18:56 · 612 阅读 · 0 评论 -
一个整数数组, 将这个数组划分为一些连续的子数组, 将各个子数组内部元素进行排序后,整个数组是有序的,问最多能切成多少个子数组
int[] nums = {2,1,4,3,6,5};public int partitionArray(int[] nums) { int res = 0; int n = nums.length; // maxLeft[k] [0,k]之间的nums最大值 int[] maxLeft = new int[n]; // minRight[k] [k, n-1]的nums最小值 int[] minRig原创 2020-08-03 21:32:42 · 892 阅读 · 1 评论 -
数据流中的中位数
private PriorityQueue<Integer> minHeap = new PriorityQueue<>(); private PriorityQueue<Integer> maxHeap = new PriorityQueue<>((i1, i2)->(i2-i1)); private int count = 0; public void insert(Integer num) { if ((c原创 2020-08-03 19:20:00 · 132 阅读 · 0 评论 -
大数相乘 lc 43. 字符串相乘
public String multiply(String num1, String num2) { int n1 = num1.length(); int n2 = num2.length(); int[] res = new int[n1+n2]; for (int i = n1-1; i >= 0; i--) { for (int j = n2-1; j >= 0; j--) {原创 2020-08-03 18:45:19 · 184 阅读 · 0 评论 -
大数相减
s1 s2无前置0,且都为正public String divStrings(String num1, String num2) { int compare = compareStr(num1, num2); String first, second; int flag = 1; StringBuilder sb = new StringBuilder(); if (compare > 0) {原创 2020-08-03 16:41:49 · 101 阅读 · 0 评论 -
大数相加,有符号,有前置0(可能一正一负)
public String add2BigInteger(String s1, String s2) { if (s1 == null || s2 == null) return null; if (s1.length() == 0) return s2; if (s2.length() == 0) return s1; int f1 = 1, f2 = 1; // 第一位有可能是符号 if (s1.ch.原创 2020-06-29 11:48:00 · 258 阅读 · 0 评论 -
长为N的数组中,每个值都是1-N范围内的,现在有某个数字出现了两次,某个数字丢失了,其他的数字仅出现一次,求重复的数和丢失的数。
//首先该题中一个数组中的值可以对应数组的一个下标([1,N] -> [0,N-1])。//从前向后遍历数组,取到每一个值,就对对应下标位置的值做乘以-1的操作,//这样既存储了额外信息,也不会丢失原信息(取绝对值就是原来的值)。//最后数组中剩两个正值,一个是乘了两次-1,一个是乘了0次-1,// 再稍加判断就可以得到结果。 int[] a = {3, 2, 1, 3}; int n = a.length; Set<Integer> se原创 2020-06-28 21:23:41 · 651 阅读 · 0 评论 -
二进制转十进制 注意溢出
public Long binary2Decimal(String s) { long result = 0; boolean negative = false; int i = 0, len = s.length(); if (len > 0) { char firstChar = s.charAt(0); if (firstChar == '-') {原创 2020-06-28 14:15:22 · 422 阅读 · 0 评论 -
string2double函数
public double string2double(String str) { if (str == null || str.length() == 0) throw new IllegalArgumentException("argument to string2double is null or is blank"); double numBeforeDot = 0, numAfterDot = 0; int tmp = 0;原创 2020-06-28 11:02:02 · 940 阅读 · 0 评论 -
前缀树,字典树,trie
public class TrieST<Value> { private static final int R = 256; private Node root; private int n; private static class Node { private Object val; private Node[] next = new Node[R]; } public TrieST() {} public Value get(String key) { i原创 2020-06-27 15:09:15 · 110 阅读 · 0 评论 -
01表示岛屿和水的模型中,求与给定点最近的岛屿的距离
public int minDistanceToIsland(int[][] grid, int i, int j) { int m = grid.length; if (m == 0) return 0; int n = grid[0].length; if (i < 0 || i >= m || j < 0 || j >= n) return 0; Queue<int[]> queu原创 2020-06-23 20:39:32 · 260 阅读 · 1 评论 -
给定一串文件目录,用分层的形式打印出来,就是linux下的tree指令
class TreeNode1 { String val; List<TreeNode1> children; public TreeNode1(String val) { this.val = val; children = new ArrayList<TreeNode1>(); }} public void printTree(List<String> dics) { if (di原创 2020-06-22 12:11:44 · 170 阅读 · 0 评论