![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
五环旗
这个作者很懒,什么都没留下…
展开
-
1.找出数组中重复的数字
方法1:通过构建HashMap,记录每个值的重复情况。复杂度:O(n),O(1)class Solution { public int duplicateInArray(int[] nums) { for(int i = 0;i < nums.length;i++){ if(nums[i]<0||nums[i]>nums....原创 2019-08-25 11:44:37 · 125 阅读 · 0 评论 -
2.二维数组的查找
因此我们可以从整个矩阵的右上角开始枚举,假设当前枚举的数是 xx:如果 xx 等于target,则说明我们找到了目标值,返回true;如果 xx 小于target,则 xx 左边的数一定都小于target,我们可以直接排除当前一整行的数;如果 xx 大于target,则 xx 下边的数一定都大于target,我们可以直接排序当前一整列的数;排除一整行就是让枚举的点的横坐标加一,排除一整列...原创 2019-08-25 12:12:01 · 72 阅读 · 0 评论 -
3.从尾到头打印链表
Attention:ArrayList<Integer> list = new ArrayList<>();ArrayList<Integer> list = new LinledList<>();list.get(i);add(),remove()1.递归方式/** * Definition for singly-li...原创 2019-08-25 15:19:20 · 69 阅读 · 0 评论 -
4.重建二叉树
易错点:边界条件,两个数组的前后位置都要保存。模拟计算得到边界即可。一次是对的。可以设置类变量,让函数更简单使用哈希表存inorder的位置更好,更易找到位置。o(1)因为是无序的数组,不能用二叉查找。有序数组中使用二叉查找函数:Arrays.binarySearch(arr,target);/** * Definition for a binary tree node....原创 2019-08-25 15:22:59 · 102 阅读 · 0 评论 -
5.数组中出现一半的数字
题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。举例:输入一个长度为9的数组{1,2,3,2,2,2,5,4,2},由于数字2在数组中出现了5次,超过数组长度一半,因此输出2。思路:摩尔投票法遇到不相同的pair就删除它...原创 2019-09-02 15:04:17 · 173 阅读 · 0 评论