剑指Offer
lk小强
水滴穿石,一步一个脚印成长为大神
展开
-
剑指offer-02-替换空格
package com.kankan.demo01_test;/** * @author kankan * @creater 2019-04-27 14:26 */public class Solution2 { public String replaceSpace(StringBuffer str) { if (null == str){ ...原创 2019-04-27 14:43:35 · 162 阅读 · 0 评论 -
剑指offer-67-把字符串转换成整数
题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用atoi或者其他类似的库函数。回到顶部思路 题目很简单,主要就是实现对每个字符转化为数字,并进行累加即可。但是有很多特殊情况都需要考虑进去,例如null、空字符串、带有正负号、字符不是数字、溢出等等。对于非法的特殊输入,返回值为0,还要用一个全局变量进行标记。写代码时一定要考虑清楚各种测试用例。p...原创 2019-07-24 21:56:59 · 279 阅读 · 0 评论 -
剑指offer-38-串字符串的排列(套路解决递归算法问题)
package offer;import java.util.ArrayList;import java.util.Collections;/** *题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc, 则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 * @author kankan * @creater...原创 2019-07-17 22:13:04 · 289 阅读 · 0 评论 -
剑指offer-39-数组中出现次数超过一半的数字
剑指offer(39) 数组中出现次数超过一半的数字package offer;import org.junit.Test;/** * 采用阵地攻守的思想: 第一个数字作为第一个士兵,守阵地;count = 1; 遇到相同元素,count++; 遇到不相同元素,即为敌人,同归于尽,count--;当遇到count为0的情况,又以新的i值作为守阵地的士兵,继续下去,到最...原创 2019-07-18 22:13:20 · 146 阅读 · 0 评论 -
剑指offer-25-合并两个排序的链表
题目: 给出两个排序的单链表,合并两个单链表,返回合并后的结果;解题思路:解法还是很简单的,但是需要注意以下几点:如果两个链表都空,则返回null;如果链表1空,则返回链表2的头节点;反之,如果链表2为空,则返回链表1的头节点;两个链表都不空的情况下:比较两个链表的头节点的值,哪个小,则新链表的头节点为哪个;package offer;/** * @author...原创 2019-06-27 21:28:59 · 195 阅读 · 0 评论 -
剑指offer-31-栈的压入、弹出序列
题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。package offer;import org.junit.Test;import java.util.Stac...原创 2019-07-02 20:44:22 · 134 阅读 · 0 评论 -
剑指offer-19-包含Min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。把每次的最小元素(之前的最小元素和新压入栈的元素两者的较小值)都保存起来放到另外一个辅助栈里。下图展示了栈内压入3、4、2、1之后接连两次弹出栈顶数字再压入0时,数据栈、辅助栈和最小值的状态。 从表中我们可以看出,如果每次都把最小元素压入辅助栈,那么就...原创 2019-07-02 19:33:56 · 164 阅读 · 0 评论 -
剑指offer-29-顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。思路:思路 每次打印矩阵最外面的一圈(用方法printMatrixInCircle()表示),每次都是这个操作,所以可...原创 2019-07-01 21:24:08 · 278 阅读 · 0 评论 -
剑指offer-03-从尾到头打印链表
题目描述* 剑指offer面试题5:从尾到头打印链表输入一个链表的头结点,从尾到头打印出每个结点的值解决方案一:首先遍历链表的节点后打印,典型的“后进先出”,可以使用栈来实现这种顺序。解决方案二:栈的本质就是递归,直接使用递归的方式,打印一个节点的时候先打印它后面的节点,再打印该节点自身,实现反向打印解决方案三:遍历链表,把链表中的元素复制到ArrayList中,然后逆序打印ArrayLi...原创 2019-05-14 20:58:10 · 136 阅读 · 0 评论 -
剑指offer-01-二维数组查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。package com.kankan.demo01;/** * @author kankan * @creater 2019-04-26 14:40 * 首先选择数组中右上角的数字 ...原创 2019-04-26 15:20:46 · 115 阅读 · 0 评论 -
剑指offer-35-复杂链表的复制
题目 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。在复杂链表中,每个结点除了有一个m_pNext指针指向下一个点外,还有一个m_pSibling 指向链表中的任意结点或者nullptr。回到顶部思路 思路1:先复制结点,用next链接,最后根据原始结点的sibling指针确定该sibling结点距离头结点的...原创 2019-07-27 14:57:48 · 149 阅读 · 0 评论