![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法之美
文章平均质量分 50
各种算法准备肝起来
图图是只猫
文章如有错还请指出
QQ 微信 958689695
展开
-
判断是否是数独
题目数独是一类广受大众喜欢的填数游戏。最典型的数独由9*9的方格组成,其中会填入一些1~ 9的数字。玩家需要补上剩余格子的数字,使得每个格子所在的行、列、小九宫格都包含有1~9的数字,不重不漏。现在小明已经做好了一些填好了所有数字的数独游戏题面,正准备挖空。但在此之前,他希望你帮忙检查一下题面是否正确,即做好的题面是否每个格子都满足所在行、列、小九宫格都包含1~9。输入第一行输入一个数T,表示小明已完成的数独题面个数。之后每个题面输入共9行,每行9个数以空格隔开,表示填好的数独中的数字。输出输原创 2021-08-17 21:25:31 · 877 阅读 · 2 评论 -
Go语言实现二分查找
用Go语言实现二分查找主函数package mainimport( "fmt")/**利用go语言写一个二分查找的算法*查询0-9999个数中的某一个数,打印查找的次数*/func main() { var array [10000]int for i := 0; i < 10000; i++ { array[i] = i } var result1,result2,result3,result4,result5 = Search(&array,15) fm原创 2020-09-09 19:14:40 · 1821 阅读 · 0 评论 -
快速排序详细学习
引言以前对快排只是一知半解,今天对快排进行深入学习。在此进行详细的图解。分治思想块排的核心思想是基于分治的,分治是将一个大的独立体分成若干个小的独立体进行解决。快排思想快排基于分治思想对一组序列进行排序,将一组序列看成一个整体。首先将整体序列分成2个独立的序列,接着将2个独立的序列分别看成各自独立的序列继续进行分治。下面进行一组图解。将每一组组序列独立的按照一个序列进行交换。最终分成单个数字完成排序。快排过程因为每一次都是对一个独立的序列排序,所以取第一次的分治过程研究其究竟是如何实现的原创 2020-07-24 18:54:37 · 1958 阅读 · 0 评论 -
堆排序详细学习
什么是堆?首先要明白堆是基于二叉树而言的,堆是二叉树的一种形式。并且堆是完全二叉树,具有完全二叉树的特点。堆只有2种:大顶堆和小顶堆。大顶堆:就是根节点大于子节点,小顶堆反之。下面上图:构造堆一棵完全二叉树如何才能转换成一个堆呢?把握好堆的特点:大顶堆的根永远大于左右孩子,那么只需要把每一个子树中的左右孩子的较大值放到根的上面即可。以大顶堆为例:观察以上的例子,通过自下向上进行堆的构造其实并不复杂,不过在上述例子的第三步可以看出发生交换的节点的子树的堆平衡可能被破坏,需要重新对子树的原创 2020-08-17 17:36:13 · 1816 阅读 · 0 评论 -
二叉树的生成及其遍历
简单写了一个二叉树的实现-递归二叉树的节点设计及其接口:public class TreeNode { //键值对 private int key,value; //树的深度 private int N; //左右节点 private TreeNode left,right; public TreeNode(int key,int va...原创 2020-03-28 15:10:14 · 1527 阅读 · 0 评论 -
输入一个链表的头节点,从尾到头反过来打印出没个节点的值
剑指Offer题目:输入一个链表的头节点,从尾到头反过来打印出没个节点的值。解题思路栈利用栈的先进后出实现递归利用递归先遍历后输出代码实现栈public static void printListNode(ListNode listNode){ Stack<ListNode> stack = new Stack<>(); ...原创 2020-04-06 22:10:23 · 1371 阅读 · 0 评论 -
实现一个单链表-java
数据结构如下:链表从头到尾依次指向a -> b -> cjava中实现链表的想法就是单个链表嵌套链表a对象(b对象(c对象))代码实现创建节点类及其接口/** * 链表节点 */public class ListNode { private Object data; private ListNode listNode; public ...原创 2020-04-04 00:07:04 · 1388 阅读 · 0 评论 -
请实现一个函数,将一个字符串中的每个空格替换"20"。
剑指Offer请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路不使用新空间-基础班不使用新空间意味着,只可以在原字符串上修改。最普通的方法就是直接从头到尾遍历,找到空格进行替换。PS :插入的字符串和原字符的数量不同,导致新的字符串需要后移(这里的移动次数很关键)不使用...原创 2020-04-02 00:03:49 · 2418 阅读 · 0 评论 -
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
剑指Offer在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2或者3。提示排序思想哈希表的Key Value解题思路排序思想(简单)利用排序的思想:找第一个值和后面...原创 2020-04-01 00:59:01 · 3065 阅读 · 0 评论 -
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
剑指Offer题目在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。矩阵如下:1 2 8 92 4 9 124 7 10 36 8 11 15解题思路从右上角或者左下角找规律。如果 查找的值大于右上角的值,向下搜索如果 查找的值小于...原创 2020-03-31 01:51:16 · 1399 阅读 · 1 评论 -
选择排序-java
选择排序,每一轮以选择最小的值为目的进行交换排序,下面我们将列出每次发生交换的数据。代码实现:代码实现很重要的一点就是找最小值,每次将一个较小的值换到指定的位置,就是说当我们需要找a[0]的值的时候,将a[0]和a[1]做比较,将较小的值放到a[0]上,然后将a[0]和a[2]比较将最小的放到a[0]上,这样比较到a[10]就可以达到a[0]最小的目的 //选择排序 publ...原创 2020-03-29 11:41:25 · 1344 阅读 · 0 评论