![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
比宋小宝白
这个作者很懒,什么都没留下…
展开
-
7 旋转数组中的最小的数字
一开始的时候我也是打算遍历数组去寻找满足条件的解但是这样的算法的时间复杂度就太高了所以就在网上看了一下别人的思路具体的思路是因为一开始的排序的规则是非减的排序规则,所以旋转以后的数组会分为来个数组一个类似与递增数组,一个类似于从最小开始的递增的数组。而我们要找的是最小的数字,所以便可以用俩个指针来解决这个问题。首先第一个指针去找到递增数组的最大的值第二个指针去找到第二个递增数组的最小...原创 2019-01-23 15:22:31 · 82 阅读 · 0 评论 -
(剑指Offer)数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。1 采用按位异或一个整形数组中,一个数字出现了一次其余的数字出现了三次。统计每一位上面的1...原创 2019-03-14 20:16:55 · 118 阅读 · 0 评论 -
(剑指Offer)整数中1出现的次数(从1到n整数中1出现的次数)
题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。C++跟java的不同在于,C++可以直接通过指针去操作内存里面的东西,但...原创 2019-03-02 11:34:12 · 102 阅读 · 0 评论 -
(剑指Offer)21 调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。当不需要报纸奇数与偶数之间的相对位置的关系的时候不需要考虑位置的相对的关系的时候,这个时候有一种类似于快速排序的思想的问题。即选取两个指针,一个前向遍历,一个后向遍历。具体的代码public static vo...原创 2019-02-18 14:01:06 · 130 阅读 · 1 评论 -
(剑指Offer)32:从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。递归的版本这个递归的版本很有意思的地方在于他创建了一个深度的函数用来判断树的深度,然后根据深度决定root向下偏移几次。public void PrintFromTopToBottom(TreeNode root){ int length = countDepth(root); if(root == null || le...原创 2019-02-23 11:09:49 · 94 阅读 · 0 评论 -
(剑指Offer)31:栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)关于栈相关的一些APIstack.pop()//返回栈顶的元素,并且删除该元素。...原创 2019-02-23 10:46:38 · 163 阅读 · 1 评论 -
(剑指offer)25 合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。我在这个题中学到了两点。1:在Java中的=赋值对于对象来说,其实是把这个地址赋值给它。可以操作其它的实例的引用来去改变这个地址中的内容。就体现在第一种方法当中,我创建了两个节点,一个节点去创造链表,一个节点去用来保存当前的状态。2:对于每次操作没有关联都是一种重新开始的时候,可以考虑一下递...原创 2019-02-16 19:56:30 · 100 阅读 · 0 评论 -
(剑指Offer)16.数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。我对于这类题型的误区有下面的几个点首先:对于返回值类型容易搞错一直默认的是int的类型,容易导致返回的类型跟想要得到的类型不匹配。第二:对于如何取倒数我一直再犯迷糊,### 取倒数的方法就是 1.0/reuslt第三:对于边界值的考虑,一直以来我做这种类型的题考虑边...原创 2019-02-16 11:53:08 · 82 阅读 · 0 评论 -
(剑指Offer)二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。关于补码的知识对于负数的补码是其正数的二进制码然后按位取反后,在取反后的二进制码后面加一得到的负数的补码。而负数的补码的形式便是在计算机中存储的形式。Java中的移位左移<< ( 右移>>) 移位以后填充1还是0看最左端(最右端)的数字如果是1则填充1,如果是0的话则填充0.所以判断一个二进制码当中存...原创 2019-02-15 10:20:47 · 86 阅读 · 0 评论 -
(剑指offer)对于二分查找的一点点理解
二分的主要用途在于:一是对于已经排序的数组进行算法运算的时候二:是在于遍历数组的时候。递归实现二分查找 public void findX(int[] arr,int start,int end,int k){ if(start > end) return; int mid = (start+end)>>>1; if(arr[mid] > k){...原创 2019-03-13 20:51:11 · 138 阅读 · 0 评论