_nohave
码龄8年
关注
提问 私信
  • 博客:64,114
    64,114
    总访问量
  • 83
    原创
  • 1,727,323
    排名
  • 81
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2017-03-22
博客简介:

Smartbbbb的博客

查看详细资料
个人成就
  • 获得11次点赞
  • 内容获得2次评论
  • 获得80次收藏
创作历程
  • 40篇
    2022年
  • 43篇
    2021年
成就勋章
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

182人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

一个数的所有连续自然数之和

* 题目描述:* 一个整数可以由连续的自然数之和来表示,现给定一个整数,计算该整数有几* 种连续自然数之和的表达式并打印出每一种表达式* 输入描述:* 一个目标整数t 1<= t <=1000* 1.该整数的所有表达式和表达式的个数* 如果有多种表达式,自然数个数最少的表达式优先输出* 2.每个表达式中按自然数递增输出* 在每个测试数据结束时,输出一行"Result:X"...
原创
发布博客 2022.03.29 ·
1221 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

乱序数组 删除所有重复元素 使得每个元素只出现一次 并且按照出现次数由高到低排序 相同出现次数 按照第一次出现的顺序进行先后排序(要求稳定)

思路:首要统计数组中每个元素出现的频次以及出现顺序(以第一次出现的为准) 创建一个结构体,包含: val count order 构造一个比较器确定比较规则(按照出现次数多少从大到小排序,出现次数相同则按照出现顺序order排序) public static int[] fx(int[] arr) { //收集节点信息 HashMap<Integer, Node> map = new HashMap<>(); int.
原创
发布博客 2022.03.29 ·
2286 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

一个Set解决二叉树任何节点间的距离问题

前提: 二叉树的每个节点都有一个指向夫节点的parent指针,遍历找到二叉树中想求距离的节点,将两个节点到根节点之间经过的所有节点存入set,那么set的大小就是距离.分析:无论是否经过头节点,无论怎样都是要汇集到头节点的 情况一: 不在同一子树,那么两边的路径只有根节点重合 情况二:在同一子树,必然有公用的节点,两条路径中选择任意一条将沿途节点存入...
原创
发布博客 2022.03.29 ·
1044 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

给定一个数组存储的二叉树,求根节点到最小叶子节点的路径

描述:以数组来存储二叉树,现给定一个数组树的根节点的值储存在下标1, 对于储存在下标n的节点,他的左子节点和右子节点分别储存在下标2*n和2*n+1并且我们用-1代表一个节点为空试求从根节点到最小叶子节点的路径,路径由节点的值组成思路: 1.将给定的数组先转换为二叉树,转换时添加一个向上的parent指针指向父节点 2.层序遍历所...
原创
发布博客 2022.03.29 ·
3062 阅读 ·
2 点赞 ·
1 评论 ·
5 收藏

迪杰斯特拉(Dijsktra)算法求到任意节点的最短路径

迪杰斯特拉算法要求 1.必须给一个起点,可求出起点到任何节点的最短路径,如果不可达那么距离设定为正无穷 2.输出一张表记录一个节点到任何节点的最短路径 3.dijkstra本质是一种贪心算法要求: 不能出现权值为负的边(如果沿途路径不能构成一个环那么也可以,但最好不要有)操作: 维护一...
原创
发布博客 2022.03.29 ·
1925 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Prim算法之最小生成树

P算法思路: 给定任意一个节点,保证权值最小的情况下生成最小生成树,在确定一个节点后,在该节点的所有边中找到权值最小的,结果集加入这条边,然后使用这条边的to节点在解锁一些边,找出最小权值的边 ...对于解锁出的边存入小根堆中每次弹出最小权值的即为有效边 /** * 最小生成树(保持树的连通性,保证权值最小) * * P算法: * 首先需要指定一个节点,由一个点解锁一批边,挑出最小的,也是用优先队列 */ public s.
原创
发布博客 2022.03.29 ·
299 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基于并查集的Kruskal算法求最小生成树

不了解并查集的可以看我之前写的: 👇https://blog.csdn.net/Smartbbbb/article/details/123623055?spm=1001.2014.3001.5501/** * 最小生成树(保持树的连通性,保证权值最小) * * K算法: * 思路: 将所有边按照权值排序,从最低权值的边开始,判断边两边的节点 * 是否在同一集合,不在union,在,放弃这条边 ... 直到遍历结束,使用 * 并查集解决,最终连成一片,因为并.
原创
发布博客 2022.03.28 ·
237 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

图的拓扑排序

拓扑排序常用于编译前依赖的编译,只有上一步做完下一步才可以进行 ...思路: 依次消除所有入度为0的节点,并消除其边的影响public static List<Node> topology(Graph graph){ //key 某一个节点 value 剩余的入度 HashMap<Node,Integer> inMap = new HashMap<>(); //只有入度为0的节点才可进入 Queu.
原创
发布博客 2022.03.28 ·
179 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

两种方式实现: 二叉树深度优先(BFS),统计二叉树最大宽度

* <pre>* 二叉树的层序遍历** '1'* | |* '2' '3'* | | | |* 4 '5' 6 7'* | | ...
原创
发布博客 2022.03.26 ·
1220 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二叉树层序遍历

基本思路: 头节点先入队,poll()则打印,如果有左有孩子,入队 .... //层序遍历 public static void levelVisit(Node node){ Queue<Node> qe = new LinkedList<>(); qe.add(node); while (!qe.isEmpty()){ Node cur = qe.poll(); ..
原创
发布博客 2022.03.26 ·
648 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二叉树的前序,中序,后序的遍历(非递归/递归实现)

1.非递归遍历二叉树 //先序遍历 先push right再push left,目的是先处理left节点 弹栈就打印 public static void prefix(Node node) { System.out.print("pre-order: "); Stack<Node> stack = new Stack<>(); stack.push(node); while (!stack.em..
原创
发布博客 2022.03.26 ·
1120 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

单调栈: 找出数组中任意位置左右两边比它大的数字

* 单调栈: 找出任意一个位置,左边比它大的及右边比它大的* {5 4 6 7 2 3 0 1}* 如5左边无右边是6描述: 找出数组中任意位置上,左右两边比它大的数字,左右没有输出 " 无 ", 否则就打印.操作时利用栈结构实现,索引从0开始,如果栈为空直接push,不为空比对栈顶数据和要push的值,如果栈顶的小于要压入的数据,那么就弹出,一直弹出到遇到比它大的栈顶元素停止,接着push就行.需要注意的是,在push过程中由于要将遇到的小的栈内元素弹出,弹出时是需要打印信息的,因为弹出行为...
原创
发布博客 2022.03.26 ·
614 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

滑动窗口 (双端队列实现)

滑动窗口: 使用双端队列实现,双端队列的作用是保证每次L边界右移时从队列头弹出的都是当前窗口的最大值.操作: 1.给定一个限制为k的窗口大小,L,R分别代表窗口左右边界,L和R只能向右移动,当R触碰到数组长度极限时结束. ...
原创
发布博客 2022.03.26 ·
830 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

给定一个栈,仅利用栈自身的结构逆序栈,不能借助其它数据结构

不借助其它数据结构,仅使用给的一个栈实现栈的逆序,听起来不可思议!其实是可以借助递归时系统压栈的方式(即栈帧存储数据)来实现逆序.操作:1.使用 f() 函数每次抽取出栈底的元素且弹出,那么就可以将栈中所有的元素按逆序的方式拿到 2.reverse() 函数也利用系统压栈,当达到调用链尽头,这时栈帧中p变量存储的就是原来栈顶的元素,并且此时栈已经空了(因为栈为空是 base case 即:终止条件),那么压栈返回,压栈返回... 就会将栈逆序.小结: 虽然在代码层面并没有利用给定栈的其它数据结.
原创
发布博客 2022.03.21 ·
667 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

图的结构 .图的广度优先遍历(BFS),深度优先遍历(DFS)

1.图的构成 1.边集 2.点集
原创
发布博客 2022.03.21 ·
546 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并查集实现

并查集用于解决关联性问题,可以合并不同的集合,判断是否属于同一集合. 根据业务场景应用很广,比如是否属于同一省份,或根据不同信息判定是否属于同一个人...并查集结构: 如下UnionSet 结构** * 并查集的结构的重要性,解决一切联通性的问题,是不是同一个用户,是否属于同一个集合 */public class UnionSetFind { public static void main(String[] args) { Integer[] arr = {1,3,
原创
发布博客 2022.03.20 ·
564 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

能安装多少灯可以照亮所有区域?

** * 给一个字符串,只由x和.构成 * x 代表墙不能装灯 * .代表居民点,可以装灯 * 如果灯放在i位置可以让 i-1 i i+1位置被点亮,返回需要点亮所有区域至少需要多少灯 *public class LightsNumber { public static void main(String[] args) { String str = "...x..xxx.x..x."; //String str = "x.x.xx...xxx....
原创
发布博客 2022.03.20 ·
202 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

O(N)时间复杂度copy一个含有随机指针的链表

* * 复制含有随机指针的链表 * * 思路1: 每遍历一次旧节点存入到map一个新的节点(不需要设置),然后依据来节点的指向设置 * 思路2: 复制节点,由原节点指向,然后拆分 * * 箭头矢代表random指向 * -------> * 7 23 3 4 56 * <--- * //思路1: 每遍历一次旧节点存入到map一个新的节点(不需要设置),然后依据来节点的指向设置 public Node ..
原创
发布博客 2022.03.18 ·
741 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

时间复杂度O(n)的回文链表判断算法, 额外空间复杂度O(1)

/** * 判断链表是否为回文: * 利用链表逆序的思路,将中点之后的指针反序指向中点,从两头走 * 直到走到null依旧没有返回false,那就是会回文 * * 2 -> 6 -> 9 <- 6 <- 2 * | * null * slow = head * fast = head *///反转后一半链表前后比对,然后调整好指针 priv..
原创
发布博客 2022.03.17 ·
844 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

链表的回文问题: 全压栈 与 半压栈

/** * 基于栈判断是否为回文 * 1.使用栈: 所有节点依次入栈,弹出一个与原链表或字符比对有一个不对,不是回文 * 2.使用栈: 利用快慢指针找到链表中点,以slow下一个开始压入栈中,弹出比对,栈为空停止 *///遍历链表全部放入栈中,弹出比对 public static boolean isPalindrome1(Node head){ if(head == null){ return false; ...
原创
发布博客 2022.03.17 ·
454 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多