随笔分类 -  算法

摘要:若设二叉树的深度为k,除第k层外,其它各层(1至k-1)的节点数都达到了最大个数,第k层所有的节点都连续几种在最左边,这就是完全二叉树 思路:按照宽度遍历进行改进 1)在遍历的过程中如果存在任何一节点有右节点,无左节点,返回false 2)在第1个条件成立的情况下,遇到了第一个左右孩子不相全的情况, 阅读全文
posted @ 2021-08-12 15:10 zh_小猿 阅读(532) 评论(0) 推荐(0)
摘要:什么是搜索二叉树? 可知,如果对二叉搜索树进行中序排列(左中右),那么会得到一个从小到大的序列。 因此,如果用中序遍历搜索二叉树,肯定是一个升序的过程 判断一颗二叉树是否是搜索二叉树可以用中序遍历(递归/非递归)代码进行改写 package Algorithms.tree; import java. 阅读全文
posted @ 2021-08-12 14:32 zh_小猿 阅读(304) 评论(0) 推荐(0)
摘要:一、递归方式遍历 递归方法完成二叉树的遍历,每一个节点都能回去3次(虽然某一次回去的时候什么也没干) 在递归序的基础上,选择打印的时机不同可演变出前序、中序、后续三种遍历方式 前序-打印递归遍历时第1次出现的数字(头左右):1,2,4,5,3,6,7 中序-打印递归遍历时第2次出现的数字(左头右): 阅读全文
posted @ 2021-08-12 10:07 zh_小猿 阅读(142) 评论(0) 推荐(0)
摘要:【题目】给定两个可能有环也可能无环的单链表,头节点head1和head2。请实现一个函数,如果两个链表相交,请返回相交的第一个节点。如果不相交,返回null 【要求】如果两个链表长度之和为N,时间复杂度请达到0(N),额外空间复杂度请达到0(1)。 一、先判断一个单链表是否有环 1、哈希表,往哈希表 阅读全文
posted @ 2021-08-11 20:29 zh_小猿 阅读(147) 评论(0) 推荐(0)
摘要:【题目】一种特殊的单链表节点类描述如下 class Node{ int value; Node next; Node rand; Node(int val){ value = val; } } rand指针是单链表节点结构中新增的指针,rand可能指向链表中的任意一个节点,也可能指向null。给定一 阅读全文
posted @ 2021-08-11 17:29 zh_小猿 阅读(94) 评论(0) 推荐(0)
摘要:【题目】给定一个单链表的头节点head,节点的值类型是整型,再给定一个整数pivot。实现一个调整链表的函数,将链表调整为左部分都是值小于pivot的节点,中间部分都是值等于pivot的节点,右部分都是值大于pivot的节点。 笔试:构建一个Node型数组,将单链表中的节点添加进数组中,在数组中进行 阅读全文
posted @ 2021-08-11 15:53 zh_小猿 阅读(105) 评论(0) 推荐(0)
摘要:题目:给一个数组arr=[2,7,9,3,1,8,5,2,5] 给定数字5,把数组中的数按照<5,=5,>5进行排列 >arr=[2,2,3,1, 5,5, 8,9,7] 代码: package Algorithms; /** * @author : zhang * @version : 1.0 * 阅读全文
posted @ 2021-08-11 13:10 zh_小猿 阅读(136) 评论(0) 推荐(0)
摘要:代码: package Algorithms; public class PrintCommonPart { public static class Node { public int value; public Node next; public Node(int data) { this.val 阅读全文
posted @ 2021-08-10 21:25 zh_小猿 阅读(39) 评论(0) 推荐(0)
摘要:判断一个数是否回文数 【题目】给定一个单链表的头节点head,请判断该链表是否为回文结构。 【例子】1->2->1,返回true;1->2->2->1,返回true;15->6->15,返回true;1->2->3,返回false。 【例子】如果链表长度为N,时间复杂度达到0(N),额外空间复杂度达 阅读全文
posted @ 2021-08-10 21:16 zh_小猿 阅读(82) 评论(0) 推荐(0)
摘要:力扣 package Algorithms; /** * @author : zhang * @version : 1.0 * @date : Create in 2021/8/1 * @description : */ public class RemoveDuplicates { public 阅读全文
posted @ 2021-08-01 20:33 zh_小猿 阅读(31) 评论(0) 推荐(0)
摘要:1、三数之和 2、最接近的三数之和 package Algorithms; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author : zhang * @version : 1 阅读全文
posted @ 2021-07-31 15:49 zh_小猿 阅读(190) 评论(0) 推荐(0)
摘要:力扣 package Algorithms; import java.util.List; /** * @author : zhang * @version : 1.0 * @date : Create in 2021/7/31 * @description : */ public class Re 阅读全文
posted @ 2021-07-31 11:39 zh_小猿 阅读(54) 评论(0) 推荐(0)
摘要:力扣 package Algorithms; /** * @author : zhang * @version : 1.0 * @date : Create in 2021/7/28 * @description : */ public class HuiWen { public static vo 阅读全文
posted @ 2021-07-28 23:49 zh_小猿 阅读(48) 评论(0) 推荐(0)
摘要:题目来源 代码实现: package Algorithms; /** * @author : zhang * @version : 1.0 * @date : Create in 2021/7/26 * @description : */ public class StrToInt { public 阅读全文
posted @ 2021-07-28 23:47 zh_小猿 阅读(138) 评论(0) 推荐(0)
摘要:力扣 代码 package Algorithms; /** * @author : zhang * @version : 1.0 * @date : Create in 2021/7/27 * @description : */ public class ReverseInt { public st 阅读全文
posted @ 2021-07-28 23:47 zh_小猿 阅读(29) 评论(0) 推荐(0)
摘要:1、链表反转: 2、逆序打印单链表: 方式1:反向遍历 方式2:Stack栈 3、查找单链表倒数第K个节点 代码实现: package exercise; import java.awt.*; import java.util.Stack; /** * @author : zhang * @vers 阅读全文
posted @ 2021-07-28 23:46 zh_小猿 阅读(124) 评论(0) 推荐(0)
摘要:思路:1、异常判断 1)两个单链表都没空,则返回null 2)链表1为空,则返回链表2、反之返回链表1。 3)比较两个链表头结点的大小。如果链表1的头结点比链表2的头结点小,则将新链表的头结点、尾节点指向链表1的头结点,同时将链表1的头结点更新为下一个结点。 反之则将新链表的头结点指向链表2的头结点 阅读全文
posted @ 2021-07-28 23:46 zh_小猿 阅读(73) 评论(0) 推荐(0)
摘要:代码如下: import java.util.ArrayList; import java.util.Arrays; public class ExerciseDemo { public static void main(String[] args) { int[][] arr = new int[ 阅读全文
posted @ 2021-07-28 23:45 zh_小猿 阅读(73) 评论(0) 推荐(0)
摘要:1、递归实现 package search; import java.util.ArrayList; import java.util.List; //注意:使用二分查找的前提是 该数组是有序的. public class BinarySearch { public static void main 阅读全文
posted @ 2021-07-28 23:44 zh_小猿 阅读(34) 评论(0) 推荐(0)
摘要:算法总结对比 1、冒泡排序 public class BubbleSort { public static void main(String[] args) { // int arr[] = {3, 9, -1, 10, 20,7}; // System.out.println("排序前:"+Arr 阅读全文
posted @ 2021-07-28 23:44 zh_小猿 阅读(131) 评论(0) 推荐(0)