![](https://img-blog.csdnimg.cn/20190921105017434.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法汇总——从挠头到秃顶👨🦲
文章平均质量分 61
没事刷刷题,锻炼锻炼大脑
JohnnyDeng94
行成于思,毁于随。
展开
-
记一次成功的探索过程:算法题-单词搜索II (暴力+字典树)
题目给定一个 m x n 二维字符网格board和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。输入:board = [[“o”,“a”,“a”,“n”],[“e”,“t”,“a”,“e”],[“i”,“h”,“k”,“r”],[“i”,“f”,“l”,“v”]], words = [“oath”,“pea”,原创 2021-04-26 20:16:08 · 265 阅读 · 0 评论 -
记一次失败的探索过程:算法题-连续的子数组和
题目题目链接:leetcode-连续的子数组和给定一个包含 非负数 的数组和一个目标 整数 k ,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,且总和为 k 的倍数,即总和为 n * k ,其中 n 也是一个整数。示例 1:输入:[23,2,4,6,7], k = 6输出:True解释:[2,4] 是一个大小为 2 的子数组,并且和为 6。示例 2:输入:[23,2,6,4,7], k = 6输出:True解释:[23,2,6,4,7]是大小为 5 的子数组,并且和为原创 2021-04-21 21:07:34 · 168 阅读 · 0 评论 -
算法拾遗:图
写在前面最近在温习数据结构,准备将一些常见的算法自己动手实现一遍,加深学习印象。我也是通过别人博客来学习,所以关于算法的讲解我会直接贴出链接,代码的注释上也会有对应的链接。如果代码有误,希望大神们指出,拜谢~算法讲解最小生成树:普利姆算法、克鲁斯卡尔算法普利姆与克鲁斯卡尔的最小生成树最短路径:迪杰拉斯算法、弗洛伊德算法、SPFA算法最短路径问题—Dijkstra算法详解最短路径问题...原创 2019-11-17 20:33:31 · 207 阅读 · 0 评论 -
剑指Offer(Java实现):把字符串转换成整数、树中两个节点的最低公共祖先
package com.dengzm.lib;/** * @Description 067 把字符串转换成整数 * * Created by deng on 2019/11/2. */public class Jianzhi067 { private static boolean isValid = false; public static void main(St...原创 2019-11-02 09:54:55 · 228 阅读 · 0 评论 -
剑指Offer(Java实现):股票的最大利润、求1+2+...+n、不用加减乘除做加法、构建乘积数组
package com.dengzm.lib;/** * @Description 063 股票的最大利润 * 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? * 例如:[9,11,8,5,7,12,16,14],在价格为5时买入,16时卖出,利润最大为11 * * Created by deng on 2019/11/1. */pu...原创 2019-11-01 19:45:15 · 192 阅读 · 0 评论 -
剑指Offer(Java实现):n个骰子的点数、扑克牌中的顺子、圆圈中最后剩下的数字
package com.dengzm.lib;import java.text.NumberFormat;/** * @Description 060 n个骰子的点数 * 把n个骰子扔在地上,所有骰子朝上的一面的点数之和为s。输入n,打印出所有可能出现的值出现的概率 * * Created by deng on 2019/11/1. */public class Jianzhi...原创 2019-11-01 15:37:54 · 387 阅读 · 0 评论 -
剑指Offer(Java实现):和为s的数字、翻转字符串、队列最大值
package com.dengzm.lib;/** * @Description 057 和为s的数字 * 题目一:和为s的两个数 * 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 * 题目二:和为s的连续正数序列 * 输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数) * * Cre...原创 2019-10-31 16:48:22 · 145 阅读 · 0 评论 -
剑指Offer(Java实现):二叉搜索树的第k大节点、二叉树的深度、数组中数字出现的次数
package com.dengzm.lib;/** * @Description 054 二叉搜索树的第k大节点 * * Created by deng on 2019/10/29. */public class Jianzhi054 { private static int index = 0; public static void main(String[] ...原创 2019-10-31 09:03:25 · 243 阅读 · 0 评论 -
剑指Offer(Java实现):丑数、第一个只出现一次的字符、数组中的逆序对、两个链表的第一个公共节点、在排序数组中查找数字
package com.dengzm.jianzhioffer;/** * @Description 049 丑数 * 我们把只包含因子2,3和5的数称作丑数。求按从大到小的第1500个丑数 * * Created by deng on 2019/9/22. */public class Jianzhi049 { public static void main(Strin...原创 2019-10-29 12:11:26 · 142 阅读 · 0 评论 -
剑指Offer(Java实现):数字序列中某一位的数字、把数组排成最小的数、把数字翻译成字符串、礼物的最大价值、最长不含重复字符串的子字符串
package com.dengzm.jianzhioffer;/** * @Description 044 数字序列中某一位的数字 * 数字以0123456789101112131415的格式序列化到一个字符序列中,第5位是5,第13位是1,等等。求任意第n位对应的数字 * * Created by deng on 2019/9/20. */public class Jianzh...原创 2019-09-21 13:08:50 · 245 阅读 · 0 评论 -
剑指Offer(Java实现):连续子数组的最大和、1~n整数中1出现的次数
package com.dengzm.jianzhioffer;/** * @Description 042 连续子数组的最大和 * * Created by deng on 2019/9/18. */public class Jianzhi042 { public static void main(String[] args) { int[] data1 ...原创 2019-09-20 19:51:49 · 175 阅读 · 0 评论 -
剑指Offer(Java实现):数据流中的中位数
题目分析因为数据流中,数据的长度是不断变化的,所以中位数的计算涉及到两步:数据的插入和中位数的查找。书中给出的较好的实现方式是,因为中位数可能是中间的数,也可能是中间两个数的平均值,所以将所有的数平均分成两份,并用最大堆和最小堆进行保存。当插入时,如果总数为偶数,将这个数与最大堆的最大值进行比较,插入到最大堆根据比较的结果,选择是否将值与最小堆中的值进行替换;如果总数为奇数,则插入最小堆,同理...原创 2019-09-18 13:34:38 · 226 阅读 · 0 评论 -
剑指Offer(Java实现):数组中出现次数超过一半的数字、最小的k个数
package com.dengzm.jianzhioffer;import java.util.Random;/** * @Description 039 数组中出现次数超过一半的数字 * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 * * Created by deng on 2019/5/25. */public class Jianzhi039 {...原创 2019-09-18 09:22:24 · 309 阅读 · 1 评论 -
剑指Offer(Java实现):复杂链表的复制、二叉搜索树与双向链表、字符串的排列
package com.dengzm.jianzhioffer;/** * @Description 035 复杂链表的复制 * 在复杂链表中,每个节点除了指向下一个节点,还有一个变量指向链表中的任意节点或为null * * Created by deng on 2019/5/25. */public class Jianzhi035 { public static vo...原创 2019-05-25 16:08:23 · 153 阅读 · 0 评论 -
剑指Offer(Java实现):二维数组中的查找
package com.dengzm.jianzhioffer;import android.annotation.SuppressLint;/** * @Description 004 二维数组中的查找 * 在一个二维数组中,每一行都按照从左到右的顺序递增,每一列都按照从上到下的顺序递增 * 判断数组中是否含有某个整数 * Created by deng on 2018/12/1...原创 2018-12-19 00:13:39 · 188 阅读 · 0 评论 -
剑指Offer(Java实现):替换空格 + 重建二叉树
package com.dengzm.jianzhioffer;/** * @Description 005 替换空格 * 请实现一个函数,把字符串中的每个空格替换成%20 * Created by deng on 2018/12/19. */public class Jianzhi005 { public static void main(String[] args) {...原创 2018-12-19 15:16:21 · 160 阅读 · 0 评论 -
剑指Offer(Java实现):斐波那契数列 + 旋转数组中的最小数字
package com.dengzm.jianzhioffer;/** * @Description 010 斐波那契数列 * Created by deng on 2018/12/19. */public class Jianzhi010 { public static void main(String[] args) { long q1 = fibonac...原创 2018-12-19 16:19:21 · 187 阅读 · 0 评论 -
剑指Offer(Java实现):矩阵中的路径+机器人的运动范围
package com.dengzm.jianzhioffer;/** * @Description 012 矩阵中的路径 * 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 * 路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左右上下移动一格。 * 如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。 * Created by deng ...原创 2018-12-20 12:16:03 · 266 阅读 · 0 评论 -
剑指Offer(Java实现):剪绳子 + 二进制中1的个数
package com.dengzm.jianzhioffer;/** * @Description 014 剪绳子 * 给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。 * 请问k[0]*k[1]*...*k[m]可能的最大乘积是多少? * Created by deng on 2018...原创 2018-12-20 16:45:45 · 206 阅读 · 0 评论 -
剑指Offer(Java实现):数值的整数平方 + 打印从1到最大的n位数 + 删除链表的节点
package com.dengzm.jianzhioffer;/** * @Description 016 数值的整数次方 * 实现函数double power(double base, int exponent),求base的exponent次方。 * 不得使用库函数,同时不需要考虑大数问题。 * Created by deng on 2018/12/20. */public ...原创 2018-12-21 15:13:08 · 199 阅读 · 0 评论 -
剑指Offer(Java实现):正则表达式匹配 + 表示数值的字符串
package com.dengzm.jianzhioffer;/** * @Description 019 正则表达式匹配 * 请实现一个函数来匹配包含'.'和'*'的正则表达式。 * Created by deng on 2018/12/21. */public class Jianzhi019 { public static void main(String[] arg...原创 2018-12-21 16:44:03 · 303 阅读 · 0 评论 -
剑指Offer(Java实现):调整数组顺序使奇数位于偶数前面 + 链表中倒数第k个节点 + 链表中环的入口节点 + 反转链表
package com.dengzm.jianzhioffer;/** * @Description 021 调整数组顺序使奇数位于偶数前面 * Created by deng on 2018/12/22. */public class Jianzhi021 { public static void main(String[] args) { recordOd...原创 2019-01-06 18:52:51 · 246 阅读 · 3 评论 -
剑指Offer(Java实现):树的子结构、二叉树的镜像、对称的二叉树
package com.dengzm.jianzhioffer;/** * @Description 026 树的子结构 * 输入两颗二叉树A和B,判断B是不是A的子结构。 * * Created by deng on 2019/5/1. */public class Jianzhi026 { public static void main(String[] args) ...原创 2019-05-01 15:13:31 · 155 阅读 · 0 评论 -
剑指Offer(Java实现):顺时针打印矩阵、包含min函数的栈、栈的压入\弹出序列
package com.dengzm.jianzhioffer;/** * @Description 029 顺时针打印矩阵 * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 * * Created by deng on 2019/5/2. */public class Jianzhi029 { public static void main(String...原创 2019-05-21 23:18:39 · 158 阅读 · 3 评论 -
剑指Offer(Java实现):从上到下打印二叉树、二叉搜索树的后序遍历序列、二叉树中和为某一值的路径
package com.dengzm.jianzhioffer;import java.util.ArrayDeque;/** * @Description 032 从上到下打印二叉树 * 从上到下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印 * * Created by deng on 2019/5/23. */public class Jianzhi032 {...原创 2019-05-25 12:40:28 · 176 阅读 · 0 评论 -
剑指Offer(Java实现):数组中重复的数字
最近刚刚结束面试,来到了北京,很开心~准备面试的过程中看了剑指Offer这本书,想尽可能的整理一些代码的Java实现。在自己看书之前,也看到过很多大牛对剑指Offer这本书的代码使用Java重新实现了。这里只是我个人对题目的理解和实现,而且实现出的代码我也会尽可能的跑出各种用例来保证准确度。如有错误,劳烦各位大佬指出~如果觉得我的代码写的不是很好,请推荐给我大佬写过的来学习一波~packag...原创 2018-12-18 22:32:52 · 1699 阅读 · 2 评论