![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
早安再见晚安舒服
今日又是搬砖的一天呢
展开
-
(leetcode)合并多条有序链表
题目给定多条有序链表,合并返回一条链表例如:输入:1->3->52->4->63->6->9输出:1->2->3->3->4->5->6->9思路:简化问题,用分治的思想将多条链表的合并转为两两合并代码:public class MergeSort1 { public ListNode me...原创 2019-12-02 22:09:19 · 126 阅读 · 0 评论 -
(leetcode)K个一组翻转链表
题目给定一个链表,K个一组进行翻转,例:输入:1->2->3->4->5->63输出:3->2->1->6->5->4图解:思路:将数组分为未被反转,被反转两大部分,定义两个指针start和stop,同时定义一个前置结点指向头结点两个指针指向将要翻转的子链表的首位,将stop.next置为null,便于采用一般的翻转...原创 2019-12-02 11:11:41 · 265 阅读 · 0 评论 -
leetcode(最大储水面积)
最大储水面积非负整数数组,[a1,a2,a3…]每个整数代表墙的高度,选出和x轴组成的容器装水最多的思路:一般思路就是取两个数中最小的,和两个数下标的差值做乘积,遍历所有的组合,那么复杂度就为O(n^2)双指针(这种思路是真的多!)同样,定义两个指针,一个指向数组首位,一个指向数组末位,计算他们间的面积,哪边指针指向的数小,则计算完面积后,指针向中心靠拢,两个指针相遇,则算法结束,输出最...原创 2019-11-25 22:55:17 · 645 阅读 · 0 评论 -
(leetcode)整数翻转
整数翻转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 若超过int范围则输出0思路:最容易想到的就是转Stringbuffer,调用reserve(),但这道题的重点,在于判断超出范围,有这么一种思路,模拟栈的弹出,从原数的个位开始,构建一个新数,达到翻转的目的代码:public class ReserveInt { public static int r...原创 2019-11-25 22:46:56 · 140 阅读 · 0 评论 -
环状链表
题目给定一个链表,判断一个链表中是否存在环,若存在,求入环点思路:设置快慢指针来判断是否存在环,具体为快慢指针刚开始都指在头节点,快指针一次移动两个节点,慢指针一次移动一个节点,若两个指针指向同一节点,则证明链表中存在环,入环点的求法见下图:数学方法可证得F=b,而h点为快慢指针相遇点,所以,当两个指针相遇时,让快指针指向初始位置且快指针也每次移动一个节点,慢指针继续走,当两者再次相遇的...原创 2019-11-10 14:29:24 · 139 阅读 · 0 评论 -
二叉树的最近的公共祖先
题目思路:若两个节点分别处于根节点的左右子树,那么最近的公共祖先就是根节点,若不存在,则分别递归根节点的左右子树,找出最近的父节点代码:public static TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root == null || root == p || r...原创 2019-11-10 14:19:22 · 90 阅读 · 0 评论 -
JAVA中队列,栈的使用@凯撒加密算法@后缀表达式
凯撒加密算法在看数据结构的时候,发现讲到了一个凯撒加密,于是就百度了解一下,它是加密算法的一种,原理大概就是首先得有一个密钥,它是用来对消息进行加密的,那么怎么加密呢,最原始的时候就是密钥为一个数字,假设为a因为你发过来的是一个字符串,于是我就对字符串的每个元素,或者说字母移动a个元素,举个例子,假如传过来的消息为"hello",a为1,那么加密之后的字符应该为"gfmmp", 但是这有个很明显...原创 2019-04-12 00:24:08 · 325 阅读 · 0 评论