算法
metoo@96
https://github.com/zhuguozhu123
展开
-
红黑树之旅 | 120+个图解过程
本篇红黑树文章,近120多幅图构成,让你了解红黑树不再难。 发表是最好的记忆 --候捷 目录: 红黑树介绍 旋转分析 插入分析 删除分析 完整实例宏微观图解过程 5.1插入宏微观图解过程 5.2删除宏微观图解过程 代码实现分析 分析过程附件 先看下《算法导论》对R...原创 2020-04-27 13:14:02 · 501 阅读 · 0 评论 -
二维数组中的查找(剑指offer)_学习记录
二维数组中的查找(剑指offer)_学习记录【题目描述】在一个二维数组中(每个一维数组的长度相同), 每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。e.g.【算法实现】package p43;/** * 二维数组的查找算法实现 * @author Guozhu...原创 2018-10-05 01:10:57 · 118 阅读 · 0 评论 -
回文判断_学习记录
回文判断_学习记录【题目描述】回文,英文palindrome, 指一个顺着读和反过来读都一样的字符串,比如madam, 我爱我,这样的短句在智力性、趣味性和艺术性上都颇有特色。那么,我们的问题是判断一个字符串是否是回文?【算法实现】method1: 双指针package p42;/** * 字符串的回文判断 * @author Guozhu Zhu * @date ...原创 2018-10-04 23:00:03 · 195 阅读 · 0 评论 -
N叉树的最大深度_学习记录
【说明】 给定一个N叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 : 【算法实现】 /* // Definition for a Node. class Node { public int val; public List<Node> chi...原创 2018-09-21 23:09:46 · 503 阅读 · 0 评论 -
【数据结构与算法经典问题解析--java语言描述】_第10章_学习记录
【数据结构与算法经典问题解析--java语言描述】_第21章_学习记录排序的相关问题:問題01: 給定含有重複元素的n個數的數組A[0, .. n-1].給出算法,檢查是否存在重複元素。假設不允許使用額外的空間 (即可以使用臨時變量,O(1)存儲空間)package p10;/** * 問題01: 給定含有重複元素的n個數的數組A[0, .. n-1].給出算法,檢查是否...原创 2018-10-04 00:25:44 · 456 阅读 · 0 评论 -
矩阵相关_学习记录
package p41;/** * 矩阵 * @author Guozhu Zhu * @date 2018/10/11 * @version 1.0 * */public class Test05 { /* ========== Test ========== */ public static void main(String[] args) { int arr1...原创 2018-10-11 12:42:07 · 115 阅读 · 0 评论 -
【数据结构与算法经典问题解析--java语言描述】_第21章_学习记录
【数据结构与算法经典问题解析--java语言描述】_第21章_学习记录問題1: 設計一個算法,安照螺旋順序依次輸出矩陣中的元素;package p21;import java.util.ArrayList;import java.util.List;/** * 問題1: 設計一個算法,安照螺旋順序依次輸出矩陣中的元素; * @author Guozhu Zhu * @...原创 2018-10-03 02:09:12 · 349 阅读 · 0 评论 -
滑动窗口最大值(剑指offer)_学习记录
滑动窗口最大值(剑指offer)_学习记录【题目描述】给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2...原创 2018-10-03 00:55:40 · 145 阅读 · 0 评论 -
矩阵中的路径(剑指offer)_学习记录
矩阵中的路径_学习记录【题目描述】请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩...原创 2018-10-01 02:17:32 · 153 阅读 · 0 评论 -
迷宫求解_学习记录
迷宫求解_学习记录package p37;/** * 迷宫求解 * @author Guozhu Zhu * @date 2018/9/8 * @version 1.0 * */public class Maze { /* ========== Test ========== */ public static void main(String[] args) {...原创 2018-09-24 00:47:05 · 159 阅读 · 0 评论 -
最长回文子串_学习记录
最长回文子串_学习记录package p41;/** * 最长回文子串 * @author Guozhu Zhu * @date 2018/9/23 * @version 1.0 * */public class Test10 { /* ========== Test ========== */ public static void main(String[] ...原创 2018-09-23 23:11:43 · 141 阅读 · 0 评论 -
排序算法小结_学习记录
排序算法小结_学习记录package p38;/** * 排序和查找算法总结 * @author Guozhu Zhu * @date 2018/9/11 * @version 1.0 * */public class Test06 { /* ========== Test ========== */ public static void main(String...原创 2018-09-11 22:12:27 · 212 阅读 · 1 评论 -
贪婪算法_找零钱问题_学习记录
贪婪算法_找零钱问题_学习记录package p33;import java.util.Scanner;/** * 贪婪算法-解决找零钱问题 * @author Guozhu Zhu * @date 2018/8/30 * @version 1.0 * */public class Test10 { public static int max = 10; ...原创 2018-08-30 21:17:21 · 835 阅读 · 0 评论 -
算法刷题(26)_包含min函数的栈_学习记录
算法刷题(26)_包含min函数的栈_学习记录package p29;import java.util.Stack;/** * 包含min函数的栈 * @author Guozhu Zhu * @date 2018/8/19 * @version 1.0 * */public class Test04 { public Stack<Integer>...原创 2018-08-19 11:49:36 · 122 阅读 · 0 评论 -
算法刷题(23)_删除排序数组的重复元素_学习记录
算法刷题(23)_删除排序数组的重复元素_学习记录package p23;/** * 数组中删除重复项 * @author Guozhu Zhu * @date 2018/8/8 * @version 1.0 * */public class Test03 { public static void main(String[] args) { int[] arr...原创 2018-08-08 23:43:47 · 137 阅读 · 0 评论 -
机器人运动范围(剑指offer)_学习记录
机器人运动范围(剑指offer)_学习记录【题目描述】 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达...原创 2018-09-30 01:27:00 · 156 阅读 · 0 评论 -
盛最多水的容器_学习记录
盛最多水的容器【题目描述】给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,...原创 2018-10-20 22:16:21 · 112 阅读 · 0 评论 -
用栈实现队列_学习记录
用栈实现队列_学习记录【题目描述】使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); qu...原创 2018-10-20 22:37:35 · 110 阅读 · 0 评论 -
约瑟夫环问题小记
约瑟夫环问题小记约瑟夫环是一个数学的应用问题,已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出圈;他的下一个人又开始从1开始报数,数到m的那个人又出圈;依次规律重复下去,直到剩余最后一个胜利者。1)数组求解:#include <stdio.h>#include <stdlib.h>#define...原创 2019-07-11 02:30:30 · 303 阅读 · 0 评论 -
Linux基础回顾
Linux基础回顾Linux起源于一个学生的简单需求。Linus Torvalds是Linux的作者与主要维护者,在芬兰赫尔辛基大学时所买得起的唯一软件是Minix. Minix是一个类似Unix,被广泛用来辅助教学的简单操作系统。Linus对Minix并不是很满意,于是决定自己编写软件。他以当时熟悉的Unix作为原型,在一台Intel386Pc上开始了他的工作,然后成功的完成了Lin...原创 2019-05-11 15:36:40 · 161 阅读 · 0 评论 -
字符串中大小写转换小例
字符串中大小写转换小例package week11_2;/** * 转换大小写 * @author Guozhu Zhu * @date 2019/5/7 * @version 1.0 * */public class Demo01 { /* ========== Test ========== */ public static void main(String...原创 2019-05-07 23:29:05 · 749 阅读 · 0 评论 -
长度最小的子数组
长度最小的子数组【题目描述】给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和≥ s的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。【算法实现】算法思路:双指针的实现,类似于一个滑...原创 2019-05-19 10:52:03 · 193 阅读 · 0 评论 -
Huffman编码小例子
Huffman编码小例子package week10_01;import java.util.HashMap;import java.util.PriorityQueue;/** * 哈弗曼编码 * @author Guozhu Zhu * @date 2019/5/6 * @version 1.0 * */public class Huffman04 { ...原创 2019-05-06 20:18:30 · 641 阅读 · 0 评论 -
TopK 问题
TopK 问题package p56;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.PriorityQueue;/** * TopK 最小的k个数 * @author Guozhu Zhu * @date 2019...原创 2019-04-13 15:55:07 · 118 阅读 · 0 评论 -
最长回文子串
最长回文子串-Manacher算法实现package p56;/** * 最长回文子串 * @author Guozhu Zhu * @date 2019/4/13 * @version 1.0 * */public class Manacher01 { /* ========== Test ========== */ public static void...原创 2019-04-13 13:45:01 · 112 阅读 · 0 评论 -
数独问题求解
数独问题求解package p1;/** * 数独问题求解 * @author Guozhu Zhu * @date 2019/4/16 * @version 1.0 * */public class Shudu01 { /* =========== Test =========== */ public static void main(String[] arg...原创 2019-04-16 11:15:12 · 585 阅读 · 0 评论 -
【数据结构】 RBTree(红黑树)简单实现
[数据结构] -- Red-Black-Tree简单实现红黑树的性质:1. 红黑树的根节点为黑色2. 红黑树的节点黑或红3. 叶子节点为nil黑节点4. 红色节点的孩子节点为黑色节点5. 从任意节点到其子孙的叶子节点的路径上包含相同的黑色节点个数(保证了从根节点到叶子节点的最长路径小于最短路径的两倍,从而实现二叉平衡树的局部平衡性)根据《算法导论》、java 中的Tre...原创 2019-03-22 16:21:45 · 790 阅读 · 0 评论 -
【数据结构与算法经典问题解析--java语言描述】_第20、21章_学习记录
【数据结构与算法经典问题解析--java语言描述】_第20、21章_学习记录第20章:第21章:1.1 本章主要介绍的是对于面试和考试有用的话题1.2 位运算的使用1.2.1 按位与操作按位与(And)操作测试两个二进制数,如果两个数对应的位值均为1,则返回值中该位值为1;如果不同时为1,则返回0;1.2.2 按位或操作按位或(OR)操作...原创 2018-12-02 13:48:36 · 397 阅读 · 0 评论 -
数据结构复习系列_查找_学习记录
数据结构复习系列_查找_学习记录查找运算:1.1 查找的基本概念1)查找表: 由同一类型的数据元素(或记录)构成的集合;2)静态查找表: 查找的同时对查找表不做修改操作(如插入和删除)3)动态查找表: 查找的同时对查找表具有修改操作;4)关键字: 记录中某个数据项的值,可用来识别一个记录;5)次关键字:可以标识若干个数据元素;6)查找算法的评价指标:AS...原创 2018-11-29 00:53:51 · 170 阅读 · 0 评论 -
Pow(x, n)算法实现_学习记录
pow(x, n)算法实现_学习记录package ps;/** * @author Guozhu Zhu * @date 2018/11/10 * @version 1.0 * */public class Demo { /* ============ Test ============ */ public static void main(String[] a...原创 2018-11-10 11:47:28 · 230 阅读 · 0 评论 -
随机选择算法实现_《算法导论》_学习记录
package com.zhuguozhu.util3;import java.util.Random;/** * 随机选择算法实现 * @author Guozhu Zhu * @date 2018/11/10 * @version 1.0 * */public class RandomSelected01 { /* ============ Test ======...原创 2018-11-10 01:52:30 · 227 阅读 · 0 评论 -
数据结构+算法_温故知新系列_第8章排序
第8章 排序8.1 概述:1. 排序的定义:将一组杂乱无章的数据按一定规律顺次排列起来。2. 排序的目的:方便查找。3. 内外排序区分:若待排序记录都在内存中,称为内部排序。若待排序记录一部分在内存,一部分在外存,则称为外部排序。(外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外存,显然外部排序要复杂得多)4 排序算法好坏的衡量标准:时间效率/空间效率...原创 2018-11-04 12:13:21 · 172 阅读 · 0 评论 -
算法刷题(22)_只出现一次的数字_学习记录
只出现一次的数字_学习记录package p23;/** * [说明] * 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 * @author Guozhu Zhu * @date 2018/8/8 * @version 1.0 * */public class Test01 { public static...原创 2018-08-08 21:13:32 · 175 阅读 · 0 评论 -
优先级队列_学习记录
优先级队列_学习记录【例子】:在1,000,000个元素中选出前100名?在N个元素中选出前M个元素排序? nlogn使用优先队列 nlogm优先队列的主要操作:入队 出队(取出优先级最高的元素)小顶堆: //小顶堆 PriorityQueue queue = new PriorityQueue(); queue.offer(5); queue....原创 2018-08-08 11:48:46 · 146 阅读 · 0 评论 -
算法刷题(2)--数字出现次数超过数组长度的一半
算法刷题(2)--数字出现次数超过数组长度的一半package p1;/** * 题目描述: * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 * 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 * 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 * @author Guozhu Zhu * @date 20...原创 2018-04-13 22:58:46 · 130 阅读 · 0 评论 -
算法刷题(13)--求数列的和
算法刷题(13)--求数列的和题目描述:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。输入描述:输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。输出描述:对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。示例1输入81 42 2输出94.733.41package p2...原创 2018-04-30 14:06:23 · 169 阅读 · 0 评论 -
算法学习记录(9)--最大的k个数
算法学习记录(9)--最大的k个数package p1;import java.util.ArrayList;import java.util.Collections;import java.util.PriorityQueue;/** * 最小的k个数 * @author Guozhu Zhu * @date 2018/4/19 * @version 1.0 * */p...原创 2018-04-19 01:45:51 · 130 阅读 · 0 评论 -
算法刷题(8)--最小k个数
算法刷题(8)--最小k个数package p1;import java.util.ArrayList;import java.util.Collections;import java.util.PriorityQueue;/** * 最小的k个数 * @author Guozhu Zhu * @date 2018/4/19 * @version 1.0 * */publ...原创 2018-04-19 01:20:56 · 152 阅读 · 0 评论 -
算法小记(2)--是否是丑数?
算法小记(2)--是否是丑数?package com.zhuguozhu.p1;/** * 判断数是否是丑数? * @author Guozhu Zhu * @date 2018/4/12 * @version 1.0 * */public class Test03 { public static void main(String[] args) { System.ou...原创 2018-04-12 23:02:57 · 214 阅读 · 1 评论 -
算法小记(1)--判断三个数的最大,最小
算法小记(1)--判断三个数的最大,最小package com.zhuguozhu.p1;/** * 判断三个数的最大,最小 * @author Guozhu Zhu * @date 2018/4/12 * @version 1.0 * */public class Test01 { public static void main(String[] args) { in...原创 2018-04-12 22:40:32 · 1040 阅读 · 0 评论