链表类题目常用方法
摘要:1.头插法 ListNode dump=new ListNode(-1); dump.next=head; 两两交换链表中的节点 反转链表 反转链表 II 2.快慢指针法 ListNode slow=head; ListNode fast=head; while(fast!=null&&fast.n
阅读全文
阿里云一面凉经
摘要:1.mysql范式 2.java的锁怎么实现,乐观锁,具体使用场景 3.java的数据结构,hashmap扩容条件,转换为红黑树的条件 4.设计模式 5.’tcp和udp区别 算法题 归并排序,复杂度,稳定性 100w个数快速求和
阅读全文
剑指 Offer 20. 表示数值的字符串
摘要:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"-1E-16"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。 “1.为什么是啊???” class S
阅读全文
1128. 等价多米诺骨牌对的数量 - 找规律?
摘要:给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a==c 且 b==d,
阅读全文
剑指offer67 - 把字符串转化成整数
摘要:首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后
阅读全文
剑指 Offer 16. 数值的整数次方 - 分成奇偶,以及对于负数的溢出单独提出来一个
摘要:class Solution { public double myPow(double x, int n) { if(n==0){ return 1; } if(n<0) { return 1/x*myPow(1 / x, -n-1); } return (n % 2 == 0) ? myPow(x
阅读全文
剑指 Offer 46. 把数字翻译成字符串 - 递归+动态规划
摘要:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 class Solution { public int transl
阅读全文
剑指 Offer 45. 把数组排成最小的数 - 模拟排序
摘要:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 思路:先转化成字符串,然后写一个新的Array.sort()的comparator,任意两个字符串o1,o2如果o1+o2>o2+o1,那么o1在o2前面,可以用compareTo实现 class Sol
阅读全文
1319.连通网络的操作次数-并查集
摘要:用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。 网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。 给你这个计算机网络
阅读全文
数字序列中某一位的数字
摘要:思路一:找规律 我们通过观察,可以发现以下规律: 对于第 n 位对应的数字,我们令这个数字对应的数为 target,然后分三步进行。 首先找到这个数字对应的数是几位数,用 digits 表示; 然后确定这个对应的数的数值 target; 最后确定返回值是 target 中的哪个数字。 举个栗子: 比
阅读全文
989.数组形式的整数加法 - 大数加法
摘要:class Solution { public List<Integer> addToArrayForm(int[] A, int K) { // 初始化参数 List<Integer> res = new ArrayList<Integer>(); int n = A.length; // 1.
阅读全文
java多线程 - 同步安全
摘要:1.不加任何同步措施 package jianzhioffer; //出现不安全问题 /** * 吐钱成功,吐出钞票:800.0 吐钱成功,吐出钞票:800.0 余额为:200.0 余额为:-600.0 */ class Account{ public String accountNo; publi
阅读全文
剑指offer 48 -最长不含重复字符的子字符串 动态规划
摘要:package jianzhioffer; import java.util.HashMap; import java.util.Map; public class test48 { public static void main(String[] args) { String s="pwwkew"
阅读全文
剑指offer 43 - 1-n整数中1出现次数
摘要:想法有了但是没实现出来: 按位找,从个位到最高位,每一位1个数之和 具体来讲,分成当前位curr,当前位之前所有位:高位high,以及当前位之后所有位:低位low 维护一个i,i=1表示当前个位,i=10十位,以此类推 那么,对于个位上的1,我们首先要看,这个数有多少个10,因为0-9十个数里面有1
阅读全文
剑指offer-29 顺时针打印矩阵 - 模拟
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 思路就是不断移动上下左右的边界,按照上右下左的方式进行遍历 class Solution { public int[] spiralOrder(int[][] matrix) { List<Integer> list=new Array
阅读全文
二叉树后续遍历序列-递归
摘要:想法都对了但是没写明白,不能把left和right分开看 //最后一个节点是根节点,从开始找第一个大于根的是右子树起始, //划分左右子树递归进行判断,如果左有大于根的或者右有小于根的,false class Solution { public boolean verifyPostorder(int
阅读全文
剑指offer-51 数组中的逆序对
摘要://在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。//暴力方法超时,考虑归并排序class Solution { public int reversePairs(int[] nums) { if(nums==null||n
阅读全文
68-二叉树最近公共节点
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
阅读全文
剑指 Offer 60. n个骰子的点数 - 动态规划
摘要:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 class Solution { public double[] dicesProbabi
阅读全文
连接所有点的最小费用 - 最小生成树Prim
摘要:给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [xi, yi] 。 连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi - xj| + |yi - yj| ,其中 |val| 表示 val 的绝对值。 请你返回将所有点连
阅读全文