算法-剑指OFFER
文章平均质量分 54
正橙橙橙橙
这个作者很懒,什么都没留下…
展开
-
剑指offer-TopK问题
给予一个未排序数组,需要你找出最小的k个值 1.快排,直接给出前k个值 class qksort{ public static int[] topK(int k , int[] arr){ if( k > arr.length) return arr; quicksort(arr,0,arr.length-1); retrun Arrays.Copyof(arr,k) } private static void q原创 2021-11-26 21:36:45 · 323 阅读 · 0 评论 -
剑指Offer-包含Min函数的栈
要求实现一个时间复杂度O(1)的函数,找到栈中的最小值。 那么以空间换时间,加入一个辅助栈即可。 package 剑指Offer.栈.包含min函数的栈; import java.util.Stack; /** * @program:多线程和IO * @descripton:辅助栈实现 * @author:ZhengCheng * @create:2021/10/29-19:57 **/ public class minStack { private Stack<Integ原创 2021-10-29 20:05:26 · 95 阅读 · 0 评论 -
剑指Offer - 顺时针输出矩阵
package 剑指Offer.二维矩阵.顺时针打印矩阵; /** * @program:多线程和IO * @descripton:顺时针向内打印数组 * @ 例如给定一个二维数组 [1,2,3] [1 ,2 ,3 ,4] * [4,5,6] [5 ,6 ,7 ,8] * [7,8,9] [9,10,11,12] * @ 我们需要输出 123698745 ..原创 2021-10-19 21:55:46 · 111 阅读 · 0 评论 -
剑指Offer-镜像二叉树
package 剑指Offer.二叉树.二叉树镜像; import java.util.ArrayDeque; import java.util.LinkedList; import java.util.Queue; /** * @program:多线程和IO * @descripton:输入一个二叉树,利用一个函数输出其镜像 * @author:ZhengCheng * @create:2021/10/19-18:54 **/ public class MirrorTree { ..原创 2021-10-19 19:42:33 · 92 阅读 · 0 评论 -
剑指Offer-返回倒数第k个节点
返回倒数第k个节点。LinkedList package 剑指Offer; import java.util.Stack; /** * @program:多线程和IO * @descripton:返回倒数第k个节点 * @author:ZhengCheng * @create:2021/10/11-14:36 **/ public class DeleteNodeBackward { //题解中均未考虑k会大于链表长度的情况 public static void mai.原创 2021-10-11 15:18:26 · 92 阅读 · 0 评论 -
剑指Offer-调整数组顺序
调整数组顺序使得奇数位于偶数前面。不限排列顺序,只要求奇数在偶数前面。 package 剑指Offer; import java.util.LinkedList; /** * @program:多线程和IO * @descripton:调整数组顺序使得奇数位于偶数前面 * @author:ZhengCheng * @create:2021/10/11-14:05 **/ public class ChangePositon { //思路1:最简单的思路当然是遍历一次数组,将奇数.原创 2021-10-11 15:17:24 · 117 阅读 · 0 评论 -
剑指Offer-打印从1到最大的n位数-删除节点
打印从1到最大的n位数,传递n,打印从1到n位数。 例如输入3,打印1-999.则打印的关系为 Math.pow(10,3). package 剑指Offer; /** * @program:多线程和IO * @descripton:打印从1到最大的n位数 * @author:ZhengCheng * @create:2021/10/11-13:57 **/ public class PrintNums { public static void main(String[] args原创 2021-10-11 15:15:07 · 89 阅读 · 0 评论 -
剑指offer-子数组的和系列
一共有三道题: 1.输入一个整数数组和一个整数k,请问数组中有多少个数字之和等于k的连续子数组?例如,输入数组[1,1,1],k=2,则返回2。 2.输入一个只包含0和1的数组,求0和1的个数相同时,最长连续子数组的长度。例如[0,1,0]是2. 3.输入一个整数数组,如果一个数字左边的子数组的数字之和等于右边的子数组的数字之和,那么返回该数字的下标,如果没有,返回-1. 这三道题其实都是针对子数组的题目, 具体的思路在每题的解答中有写。 题1: package 剑指Offer.第二章数组.原创 2021-10-08 13:34:42 · 101 阅读 · 0 评论 -
剑指Offer-小青蛙跳台阶
类比斐波那契数列,只不过注意考虑一下初始条件。 package 剑指Offer.青蛙跳台阶问题; /** * @program:多线程和IO * @descripton:青蛙跳台阶,一次一阶或者两阶,问有几种跳法。(类比斐波那契) * @author:ZhengCheng * @create:2021/9/28-15:11 **/ public class FrogClimbStairs { //递归,注意初始条件 太慢! private static int frogJ原创 2021-09-28 15:39:07 · 90 阅读 · 0 评论 -
剑指offer- 和大于或等于k的最短子数组
package 剑指Offer.第二章数组.和大于或等于k的最短子数组; /** * @program:多线程和IO * @descripton:正整数数组和一个正整数k,数组中和大于或等于k的连续子数组的最短长度是多少? * @若无,返回0; * @author:ZhengCheng * @create:2021/9/26-16:57 **/ public class MinlengthArr { public int minlength(int[] arr ,int k){ ..原创 2021-09-26 17:20:53 · 188 阅读 · 0 评论 -
剑指offer-数组中和为0的3个数字
package 剑指Offer.第二章数组.数组中和为0的三个数字; import java.util.Arrays; import java.util.LinkedList; import java.util.List; /** * @program:多线程和IO * @descripton:所有和为0的3个数字的三元组? * @返回值中不得包含重复的三元组。 * @author:ZhengCheng * @create:2021/9/26-16:07 **/ public class ..原创 2021-09-26 16:56:31 · 99 阅读 · 0 评论 -
剑指offer-数组中的两个数字之和
1.非排序数组的两个数字之和为k,输入k,得到两数字和为k的下标。假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。 步骤:得到k , 找k-i 时间复杂度O(n方)比较简单,不写。 2.输入一个递增排序的数组和一个值k,请问如何在数组中找出两个和为k的数字并返回它们的下标。此题和题1很相似,但是给出了递增排序,我们可以合理的利用这个条件,简化时间复杂度。 对于此时,我们有了递增的条件,可以使用双指针的办法,一个在头一个在尾,进行扫描。 若a[i...原创 2021-09-25 17:28:08 · 263 阅读 · 0 评论 -
剑指offer-只出现一次的数字
package 剑指Offer.只出现一次的数字; /** * @program:多线程和IO * @descripton:一个整数数组,有一个数字只出现了一次,其余的都出现了2次 * @进阶版 其他的出现了三次 * @author:ZhengCheng * @create:2021/9/24-19:27 **/ public class NumAppearOnce { public static void main(String[] args) { int[] a..原创 2021-09-24 20:30:02 · 88 阅读 · 0 评论 -
剑指offer-二进制加法
题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。 package 剑指Offer.整数除法和二进制加法; /** * @program:多线程和IO * @descripton:二进制加法 * @题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。 * @author:ZhengCheng * @create:2021/9/24-18:38 **/ public class AddBybBinary { pu...原创 2021-09-24 19:26:46 · 134 阅读 · 0 评论 -
剑指offer-两个整数的除法
题源剑指offer 在代码中,没有对整数的边界进行判断。读者可自行添加条件。唯一需要注意的就是,整数的最大正数是要比最小负数的绝对值大 1 的。所以要避免,溢出。 package 剑指Offer.整数除法和二进制加法; /** * @program:多线程和IO * @descripton:输入两个int型整数,它们将进行除法计算并返回商,要求不用 * @乘号除号及求余符号。当发生溢出时,返回最大的整数值。除数不为0. * @author:ZhengCheng * @create:202原创 2021-09-21 20:57:32 · 218 阅读 · 0 评论 -
剑指offer-二维数组的查找
package 剑指Offer.二维数组的查找; /** * @program:多线程和IO * @descripton:一个二维数组,每一行都按照从左到右递增,每一列从上到下递增。查找一个整数,如果有 * @返回true,没有false * @author:ZhengCheng * @create:2021/9/17-18:39 **/ public class SearchInDoubleWARR { public static void main(String[] args) .原创 2021-09-17 19:33:51 · 100 阅读 · 0 评论 -
剑指offer-数组中重复的数字(哈希表,原地交换)
package 剑指Offer.数组中重复的数字; import java.util.HashSet; import java.util.Set; /** * @program:多线程和IO * @descripton: * @author:ZhengCheng * @create:2021/9/17-19:00 **/ public class FindRepeatNum { public static void main(String[] args) { int..原创 2021-09-17 19:32:08 · 104 阅读 · 0 评论 -
剑指offer-旋转数组中找最小值
剑指Offer_在线编程+题解_牛客题霸_牛客网 有一个长度为N的升序数组,比如[1,2,3,4,5] ,将其旋转,即把一个数组最开始的 元素班导数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2]或者[4,5,1,2,3],求其最小值,并且要求时间复杂度为O(logn). 解题思路:首先想到的是二分查找的办法,在二分查找上进一步灵活应用,从而达到我们所需要的结果。 注意的问题: 要和末尾比较,不能和arr[i]比较。具体原因还是因为和arr[i]比较是无法...原创 2021-09-17 11:13:11 · 108 阅读 · 0 评论 -
剑指offer-两个栈实现队列
剑指Offer_在线编程+题解_牛客题霸_牛客网 该题目比较基础,注意情况分析到位即可。在橘皮算法,王道的书里,也有该基本题。 package 剑指Offer.两个栈模拟队列 import java.util.Stack; /** * @program:多线程和IO * @descripton: * @author:ZhengCheng * @create:2021/9/16-21:06 **/ public class TwoStackQueue { public stati原创 2021-09-16 22:00:33 · 122 阅读 · 0 评论 -
剑指offer-从尾到头打印链表
题源剑指offer 剑指Offer_在线编程+题解_牛客题霸_牛客网 在牛客网的解答里,有的高赞有多种答案,写完了栈的方式后和其对照,发现其使用ArrayList的方法是不适合的。复杂度来到了O(n2)。很显然,是在分析复杂度时,没有考虑到ArrayList自带的add(index , val);其底层实现并不是链表,而是数组,导致其每添加一次就得使元素后退一位,故其复杂度大大提高。从实践中也可以看出 使用Stack完成该基础的操作,100w的长度只需80ms 而使用...原创 2021-09-16 21:58:10 · 120 阅读 · 0 评论 -
9-15剑指offer(斐波那契、替换空格)
题源来自:剑指OFFER 剑指Offer_在线编程+题解_牛客题霸_牛客网 斐波那契数列: 实现方法1:递归 递归的方法最为简洁,但是重复计算过多,并且容易StackOverflow。 package 剑指Offer_斐波那契and替换空格; /** * @program:多线程和IO * @descripton:3种实现斐波那契数列 注意在static中不能访问非static的变量 * @author:ZhengCheng * @create:2021/9/15-...原创 2021-09-15 19:43:51 · 92 阅读 · 0 评论