牛客图书馆 > 读书笔记
  • 43.左旋转字符串

    考察返回字符串的子字符串方法:substring()  语法 public String substring(int beginIndex) 或 public String substring(int beginIndex, int ...
    奋进小青年 编辑于 2019-05-27 18:16:16
  • 42.和为s的两个数字

    数列满足递增,设两个头尾两个指针i和j,左右加逼: 若ai + aj == sum,就是答案(相差越远乘积越小) 若ai + aj > sum,aj肯定不是答案之一(前面已得出 i 前面的数已是不可能),j -= 1 若ai + aj ...
    奋进小青年 编辑于 2019-05-27 13:08:17
  • 41.和为s的连续正数序列

    双指针技术:就是相当于有一个窗口,窗口的左右两边就是两个指针,我们根据窗口内值之和来确定窗口的位置和宽度。 import java.util.ArrayList; public class Solution {     public A...
    奋进小青年 编辑于 2019-05-27 11:27:34
  • 40.数组中只出现一次的数字

    运用哈希表的键来存储数组元素,哈希表的值来记录数组元素在哈希表中出现的次数,运用栈来输出有序队列。 //num1,num2分别为长度为1的数组。传出参数 //将num1[0],num2[0]设置为返回结果 import java.util.HashMap; i...
    奋进小青年 编辑于 2019-05-26 10:59:12
  • 37.数字在排序数组中出现的次数

    因为是排序好的,所以利用快排的原理,查找,不过这里要稍微修改一下,使得可以查询一个double类型的数据。 public class Solution {     public int GetNumberOfK(int [] array , int k) { ...
    奋进小青年 编辑于 2019-05-24 18:56:14
  • 36.两个链表的第一个公共节点

    运用HasnMap的特性:无序排列、键具有唯一性 import java.util.HashMap; /* public class ListNode {     int val;     ListNode next = null;     ListNode...
    奋进小青年 编辑于 2019-05-24 17:53:57
  • 35.数组中的逆序对

    如图5 . 1 ( a )和图5.1 ( b)所示,我们先把数组分解成两个长度为2的子数组, 再把这两个子数组分别拆分成两个长度为1 的子数组。接下来一边合并相邻的子数组, 一边统计逆序对的数目。在第一对长度为1 的子数组{7}、{5}中7 大于5 , 因此(...
    奋进小青年 编辑于 2019-05-23 19:19:34
  • 34.第一个只出现一次的字符

    import java.util.ArrayList; public class Solution {     public int FirstNotRepeatingChar(String str) {         if(str==null||str.l...
    奋进小青年 编辑于 2019-05-23 14:14:36
  • 33.丑数

    首先从丑数的定义我们知道,一个丑数的因子只有2,3,5,那么丑数p = 2 ^ x * 3 ^ y * 5 ^ z,换句话说一个丑数一定由另一个丑数乘以2或者乘以3或者乘以5得到,那么我们从1开始乘以2,3,5,就得到2,3,5三个丑数,在从这三个丑数出发乘以...
    奋进小青年 编辑于 2019-05-22 23:51:59
  • 32.把数组排成最小的数

    将所有的数存到一个list里面,通过一个一个排序算法对所有成员进行排序。 这个排序算法这里引用了Collection的sort方法,并自定义了一个比较器,虽然有一点投机取巧的意思,但是按照分别通过将两个数字组成前后顺序互换的两个新数字这种比较方法去实现排...
    奋进小青年 编辑于 2019-05-22 19:09:26