自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 每日一题模板

每日一题模板

2019-07-19 09:29:42 472

原创 《剑指offer》-链表中环的入口节点

链表中环的入口节点给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null确定一个链表中有环:设置两个指针,从头开始,一个走的快,一个走的慢。如果在遇到 null 之前,他们相遇,说明这个链表中有环。并且相遇的节点在环中如何确定环的长度:从相遇节点开始,设置一个指针向后遍历,一边遍历一边计数,如果回到原来的位置,就可以得到环中节点的数目如何确定环的入口:现在我们已经得到了...

2019-09-12 12:37:03 174

原创 《剑指offer》-链表中倒数第K个节点

链表中倒数第K个节点输入一个链表,输出该链表中倒数第k个结点。这个难点主要是考虑代码的鲁棒性,在创建两个节点,相差 k - 1 个位置,然后遍历寻找之后,实现了基本功能。除此之外,我们还需要考虑一些特殊情况:输入的头节点为空节点,这个比较常见输入的 k <= 0 ,这种情况下,由于java里没有 无符号整型,所以在第一个循环里,将seconeNode向后遍历的过程不会出现错误。但是此...

2019-09-12 12:35:12 155

原创 《剑指offer》-调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。这里写了两种方法,各有侧重点第一种方法类似于快速排序,两个游标分别从前、后向中间移动,前面的游标停在偶数位置,后面的游标停在奇数位置,然后将两个位置的数字交换。这种方法存在一个问题,它会使得调整后的数组,不是按照之前的顺序排列的...

2019-09-12 12:33:17 149

原创 《剑指offer》-表示数值的字符串

表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是表示数字的字符串遵循模式 [+ | - ] [ A ] [ . [ B ]] [ e | E C]符号不是必须的,但是如果有的话,必...

2019-09-12 12:31:56 137

原创 《剑指offer》-正则表达式匹配

#正则表达式匹配请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配每次从字符串中拿出一个字符和模式中的字符来匹配,相对而言,模式中的第二个字符不是 ’ * ’...

2019-09-10 15:26:15 117

原创 《剑指offer》-数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0这道题的难点不是思路,反而是要考虑清楚各种情况,情况分为两种:底数 base 为 0则 指数 为0没有意义,当然题目已经排除了这种情况指数 > 0,则返回 0指数 < 0,这种情况是用 0 做分母,出错,我的做法是抛出异常...

2019-09-10 15:19:03 113

原创 《剑指offer》-二进制中1的数字

二进制中1的数字输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。这是一道考察二进制和位运算的面试题,思路是:先判断整数二进制表示中最右边是不是 1,接着把输入的整数整体右移以为。此时原来处于从右边数起第二位被移到了最右边,再判断是不是1;这样每次移动一位,直到整个整数变为 0 为止。第一种思路:右移这个数字,这样就导致了,如果这个数负数。那么在用运算符 >> 右...

2019-09-09 16:46:09 123

原创 《剑指offer》-剪绳子

题目描述给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。这里分别使用动态规划和贪心算法动态规划:对于给定长度 n 的绳子, f ( n ) = max...

2019-09-09 14:34:58 128

原创 《剑指offer》-矩阵中的路径

矩阵中的路径请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符...

2019-09-09 13:22:02 102

原创 《剑指offer》-机器人的运动范围

机器人的运动范围地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?对于这道题,一共写了四个方法:方...

2019-09-05 22:08:05 81

原创 《剑指offer》-旋转数组的最小数字

旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。这是一道二分查找的变形的题目。直接不谈遍历的方法,谁都会。旋转之后的数组实际上依然是依然是两个有序的数组...

2019-09-02 12:25:36 119

原创 《剑指offer》-斐波那契数列

斐波那契数列现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39第一种方法,递归。因为每次计算的时候,会计算很多重复的节点,因此使用递归的方法会随着n的增大而急剧增大public class Solution { public int Fibonacci(int n) { if(n==0){ retu...

2019-09-02 10:10:47 101

原创 《剑指offer》-用两个栈实现一个队列

用过两个栈实现一个队列用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。之前写过这道题,我自己想的模型就是倒米。插入元素:直接 stack1.push弹出元素:如果stack2为空的话,那么就要先将stack1中的元素取出,并压入stack2如果stack2不为空的话,那么直接 stack2.popimport java.util.Stack;...

2019-09-02 09:44:21 87

原创 《剑指offer》-二叉树的下一个节点

二叉树的下一个节点给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针对于给定的任意一个节点,这个节点都有两种情况有右节点。这种情况下,从这个节点的右节点出发,一直沿着指向左节点的指针往下走没有右节点,这种情况下首先要判断有没有父节点没有父节点了,说明这个节点是整个树的根节点,发生这种情况有两种可能一...

2019-09-01 13:33:01 104

原创 《剑指offer》-重建二叉树

重建二叉树题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。首先需要明确的是,对于任意一个二叉树的前序遍历、中序遍历、后序遍历。在前序遍历序列中,第一个数字肯定是当前二叉树的根节点,由根节点在中序遍历序...

2019-08-31 18:15:04 84

原创 《剑指offer》-从尾到头打印链表

从尾到头打印链表题目:输入一个链表的头节点,从尾到头反过来打印每个节点的值。其实有一种偷鸡的方法,因为这道题返回的是一个数组,那么我先把链表的值正序存到数组里,然后将数组翻转返回即可第一种方法:翻转链表我的方法:首先判断这个是不是空对象,是空对象的话,直接返回空数组再判断 listNode.next 是不是空,是空的说,说明这个链表只有1个值,则add之后直接返回接着创建了3个对象,...

2019-08-30 16:09:09 87

原创 《剑指offer》-替换空格

替换空格题目:请实现一个函数,把字符串中的每个空格替换成“%20”,例如,输入“We are happy”,则输出“We%20are%20happy”首先我们确定是,我们不使用额外的空间来解决这个问题。如果使用额外的空间,那么我们对原数组进行遍历,然后一个个插入就行了,这个时候空间复杂度和时间复杂度都为 O(n)不使用额外空间的做法第一种方法:从前往后寻找空格最直观的做法是,从头到尾遍历...

2019-08-29 12:11:47 103

原创 《剑指offer》-二维数组中的查找

二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数第一种方法:遍历时间复杂度:对于一个 m 行,n 列的数组,每一行都遍历,那么O(m*n),即使遍历的时候使用二分查找,O(logm * n)空间复杂度:O(1)完全没有使用到这是一个有序数组的特性第二种方...

2019-08-28 13:14:02 85

原创 《剑指offer》-不修改数组,找出重复的数字

不修改数组,找出重复的数字在一个长度为 n+1 的数组里的所有数字都在 1~ n 的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出应该是重复的数字2或者3第...

2019-08-28 12:02:25 131

原创 《剑指offer》-数组中重复的数字

数组中重复的数字在一个长度为n的数组里的所有数字都在 0~ n-1 的范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出应该是重复的数字2或者3第一种方法:排序、遍历先把输入的数组排序,然后从头到尾扫描排序后的数组就可以了。时间复杂度:就是排序的时...

2019-08-27 17:22:23 81

原创 《啊哈!算法》总结

《啊哈!算法》总结其中关于并查集、割点、割边算法未做总结

2019-08-27 14:58:13 1163 1

原创 《图解算法》总结

《图解算法》总结

2019-07-30 11:41:00 399

原创 排序算法之堆排序

  堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。  堆排序的思路:1、将原始数据按照完全二叉树的形式排列2、按照堆积的性质,使子节点的键值总是小于它的父节点;即从下到上,从右到左,将所有非叶子节点的值与其叶子节点的值作比较,将较大值放在父节点3、排列完成后,就是一个有序的堆,然后...

2019-07-27 15:50:44 139

原创 排序算法之归并排序

将两个已经排序好的数组按照顺序排序def mergesort(data): length = len(data) # 如果数组长度为1,则认为是有序数列 if length <= 1: return(data) num = int(length/2) # 左右侧都是通过归并排序,排序好的数列 left = mergesort(...

2019-07-23 10:24:27 116

原创 排序算法之插入排序

插入排序就是将未排序区的第一个数字,插入到已排序区对应的位置def insertion_sort(data): length = len(data) # 假定原始数据中,第一个数字是排序好的,所以直接从data[1]开始 for i in range(1, length): # 记录未排序第一个数字 num = data[i] ...

2019-07-23 09:46:49 79

原创 排序算法之选择排序

  选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。def selectionsort(data): # 首先记录数组长度 l...

2019-07-23 09:16:14 91

原创 排序算法之快速排序

  快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。   核心思想是,通过一个基准值,可以是第一个值,最后一个值,中间值,将基准值左侧的值都比他小,基准值右侧的值都比他大,按...

2019-07-22 10:16:58 238

原创 栈的压入、弹出序列

题目来自牛客网-剑指offer部分代码转载自 用户:“华科平凡”

2019-07-21 16:42:24 94

原创 整数中1出现的次数

题目来自牛客网-剑指offer

2019-07-20 15:09:58 101

原创 剑指offer——平衡二叉树

题目来自牛客网-剑指offer

2019-07-20 13:32:07 137

原创 剑指offer——从上向下打印二叉树

题目来自牛客网-剑指offer

2019-07-20 10:56:56 116

原创 剑指offer——用两个栈实现一个队列

题目来自牛客网-剑指offer

2019-07-20 09:59:46 123

原创 剑指offer——重建二叉树

题目来自牛客网-剑指offer

2019-07-20 09:38:24 121

原创 连连看

题目转载自:土豪gold 原文:https://blog.csdn.net/qq_15029743/article/details/94378417

2019-07-19 21:02:05 264

原创 动态规划

动态规划之后填坑

2019-07-19 15:42:38 82

原创 64.最小路径和

64.最小路径和题目和实例转载自:LeetCode

2019-07-19 15:37:59 123

原创 48.旋转图像

48.旋转图像题目及示例转载自:LeetCode

2019-07-19 14:09:50 115

原创 46.全排列

46.全排列题目及示例转载自:LeetCode

2019-07-19 11:14:13 283

原创 961.重复N次的元素

961.重复N次的元素题目及示例转载自:LeetCode

2019-07-19 09:45:37 315

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除