题目 剑指 Offer 11. 旋转数组的最小数字 我的思路 显然用二分查找,时间复杂度logn,最坏情况可能达到n。 要注意二分查找的边界条件判断,以及如果无法判断此次二分是取左或者去右时,可以尝试把上边界下标减1,再重新二分(安全地缩小边界)。 我的实现 class Solution { pub ...
分类:
编程语言 时间:
2020-07-22 16:15:20
阅读次数:
68
1、题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1:输入:[3,4,5,1,2] 输出:1 示例 2:输入:[ ...
分类:
编程语言 时间:
2020-07-22 11:25:51
阅读次数:
57
地址 https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/ https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-i ...
分类:
编程语言 时间:
2020-07-22 11:21:34
阅读次数:
62
可以想到,数组中会出现“断层”,直接遍历一次即可。不存在【1,2,3,4,5】旋转成【5,4,3,2,1】的情况。 暴力法(我感觉还行啊,为什么被叫暴力): class Solution { public int minArray(int[] numbers) { int n = numbers.l ...
分类:
编程语言 时间:
2020-07-22 11:13:53
阅读次数:
50
数组中出现次数超过一半的数字 题目链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/ 题目内容:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 ...
分类:
编程语言 时间:
2020-07-21 22:51:19
阅读次数:
94
######此题为LeetCode分类“剑指Offer”中第一题,其中解题思路以及方法众多,我也是参考借鉴了官方答案以及题解中各位大神的代码,本文中仅记录了两种个人认为常见且易于理解的方式 #####题目: 找出数组中重复的数字: 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的 ...
分类:
编程语言 时间:
2020-07-21 10:02:58
阅读次数:
76
剑指 Offer 03. 数组中重复的数字 难度? 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1 ...
分类:
其他好文 时间:
2020-07-21 09:41:09
阅读次数:
52
lc 剑指 Offer 09. 用两个栈实现队列 题目描述 输入输出描述 思路 1、使用传统的栈Stack即可完成 2、使用Deque数据结构堵住一端(堵住首) (addLast(),removeLast) 或者堵住尾(addFirst();removeFirst) 3、使用Deque数据结构堵住一 ...
分类:
其他好文 时间:
2020-07-20 13:02:17
阅读次数:
66
7. 重建二叉树 题意:面试题07. 重建二叉树 思路:前序遍历的顺序是“根-左-右”,中序遍历的顺序是“左-中-右”。 那么,对于整棵树前序遍历的结果,第一个值r一定是树的根结点。如果在中序遍历的结果中找到r的位置index,那么index左边的子数组就都是根结点r的左子树的中序遍历结果,inde ...
分类:
其他好文 时间:
2020-07-19 23:21:29
阅读次数:
70
10-I. 斐波拉契数列 题意:面试题10- I. 斐波那契数列 思路:最基础的动态规划题。数据量比较大的时候不能使用递归,会报StackOverFlow Exception,最优的方式是迭代计算。 class Solution { public int fib(int n) { if (n <= ...
分类:
其他好文 时间:
2020-07-19 23:20:11
阅读次数:
72