牛客图书馆 > 读书笔记
  • 题解 | #二维数组中的查找#

    有序二维数组对应元素查找 方法1 暴力求解法用for循环对二维数组进行遍历,找出对应目标元素 时间复杂度 O(n*2) 空间复杂度 O(1) public class Solution { public boolean Find(int ta...
    李教练1103 编辑于 2021-09-06 14:23:49
  • 4/12-剑指offer

    1.数组中出现次数超过一半的数字思路一:数组中出现次数超过一半的数字是排好序后数组的中位数,我们采用随机快速排序的思路,先在数组中随机选择一个数字,然后调整数组中数字的顺序,使得比选中数字小的数字都在他的左面,大的都在他的右面。如果选中数字的下标刚好是2/n,...
    bloodfire 编辑于 2020-04-12 19:01:52
  • 4/5剑指offer

    1.二叉树的镜像思路:先前序遍历树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶子节点的左、右子节点之后,就得到了树的镜像。 /* struct TreeNode { int val; struct TreeNod...
    bloodfire 编辑于 2020-04-05 23:03:46
  • 4/30剑指offer

    1.不用加减乘除做加法写一个函数求两个整数之和,要求函数体内不得使用四则运算符号。思路:利用位运算。第一步不考虑进位对每一位相加,可以利用异或符号;第二位考虑进位,只有1+1的时候才会产生一个进位,此时可以想象两个数先做位与运算,然后再向左移动一位。第三步把前...
    bloodfire 编辑于 2020-04-30 23:16:02
  • 3.3 代码的完整性

    题目描述面试题19 正则表达式匹配请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa&quo...
    TTing要加油 编辑于 2020-10-21 23:29:54
  • 优化时间和空间效率

    时间效率数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。示例1输入:1...
    TTing要加油 编辑于 2021-01-15 23:51:36
  • 4/7-剑指offer

    1.从上到下打印二叉树思路:利用队列,每次打印一个节点的时候,如果该节点有子节点,就把该节点的子节点放到一个队列的末尾。然后到队列的头部取出最早进入队列的节点,重复前面的打印操作,知道队列中所有的节点都被打印出来。 /* struct TreeNode { ...
    bloodfire 编辑于 2020-04-07 23:11:44
  • 位运算的使用小技巧

    对于位运算的学习,可以通过位运算替换一些常用操作的使用场景来学习,如奇数偶数判断、两个变量交换、实现加法。如果面试官要求不能使用常规的方法解决,那我们如何想起一些清奇的思路呢?位运算也能起到同样乃至性能更好的效果。 1.奇数偶数判断 if(n % 2 == 1...
    heyJulian 编辑于 2020-08-30 16:06:00
  • 4/3日题解-剑指offer

    1.调整数组顺序使奇数位于偶数前面思路:维护两个指针,第一个指针指向第一个数字,从前向后,第二个指针指向数组的最后一个数字,从后往前。如果第一个指针指向的是偶数,第二个指针指向的是奇数,那么就交换这两个数字。终止条件是,第一个指针和第二个指针相遇。 class...
    bloodfire 编辑于 2020-04-03 23:09:27
  • 4/27剑指offer

    1.和为s的数字(1)合为s的两个数字:输入一个递增数组和一个数字s,在数组中任意找两个数,使得他们的和正好是s。思路:双指针,因为是排序数组,定义两个指针,一个在头一个在尾,如果二者相加小于s,那么就头++,大于s的话,尾++,等于s,返回这两个数。 cla...
    bloodfire 编辑于 2020-04-27 23:41:33