随笔分类 - 算法
摘要:leetcode 链接 题目描述 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1: 输入:x = 4 输出:2
阅读全文
摘要:leetcode 链接 题目描述 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1
阅读全文
摘要:题目描述 某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法? 题解 #include <stdio.h> int main() { int money=100, count=0; for (int i = 1; i*1
阅读全文
摘要:题目描述 输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值; 例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出no 题解 #include <stdio.h> int main(
阅读全文
摘要:序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。从一系列字节提取数据结构的反向操作,是反序列化(也称为解编组、deserialization
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 请把一段纸条竖着放置,然后从纸条的下边向上方对折一次,压出折痕后展开,此时折痕是凹下去的。如果从纸条下边向上方连续对折两次,压出
阅读全文
摘要:public class Node<V> { public V value; public Node left; //左孩子 public Node right; //右孩子 public Node parent; //父节点 public Node(V value) { this.value =
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 给定两个二叉树的节点node1和node2,找到他们的最低公共祖先节点。 题解 解法一 设置一个 HashMap 保存节点与该节
阅读全文
摘要:二叉搜索树(也叫二叉排序树、二叉查找树,Binary Search Tree),或是空树,或是满足以下性质的二叉树: 若左子树不空,则左子树所有节点的值均小于其根节点值 其右子树不空,则右子树所有节点的值均大于其根节点值 左右子树也分别是一颗二叉搜索树 由二叉搜索树性质,当对其进行中序遍历时,结果是
阅读全文
摘要:判断一棵二叉树不是完全二叉树可以从下面两个条件判断 若一个节点只有右孩子而无左孩子则这棵树不是完全二叉树 若出现左右子树不双全的节点,则该节点后面所有节点均为叶子节点才是完全二叉树,否则不是。 public class IsCBT { //层次遍历的思想判断是否是完全二叉树 public stati
阅读全文
摘要:树型DP即在“树”的数据结构上的动态规划 技巧 根据题目构建合适的返回类 获取左右子树的信息 加工自己的信息 下面有两个例子可以参考: 判断是否为平衡二叉树 public class IsBalancedTree { //树型DP public static boolean isBalanced(N
阅读全文
摘要:通过层次遍历的思想求 public class TreeMaxWidth { //方法一 public int getMaxWidth1(Node head) { if (head == null) { return 0; } Queue<Node> queue = new LinkedList<>
阅读全文
摘要:前序遍历 递归实现 //递归实现前序遍历 public static void PreOrderRecur(Node head) { if (head == null) { return; } System.out.println(head); PreOrderRecur(head.left); P
阅读全文
摘要:题目 给定两个可能有环也可能无环的单链表,头节点 head1 和 head2。请实现一个函数,如果两链表相交,请返回相交的第一个节点,不相交返回null。要求:如果两链表长度之和为N,时间复杂度为O(N),额外空间复杂度为O(1)。 题解 首先判断两链表有无环,如果有环则求出入环点 如果两链表均无环
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 一种特殊的单链表节点描述如下 class Node { int value; Node next; Node rand; Nod
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目 给定一个单链表的头节点 head,节点的值类型是整型,再给定一个整数 piovt 。实现一个调整链表的函数,将链表调整为左部分都
阅读全文
摘要:回文是指不管是顺序读还是逆序读,读出来的都是一样效果。例如 12321 和1221 都是一个回文序列 判断一个单链表是否是回文链表可以构建一个栈,把链表结点依次入栈,然后再出栈与链表对比即可。这种方法是比较容易想到的,但额外空间复杂度是O(N)。 public static boolean isPa
阅读全文
摘要:对数组 [4,1,5,0,8,3,7,5,1] 进行排序,我们可以开辟一大小为10的辅组数组空间help[10],初值均为0。扫描数组,扫描到4,help[4]+1;扫描到1,help[1]+1;扫描到5,……。最后整个help数组是[1,2,0,1,1,2,0,1,1,0]。扫描help数组,元素
阅读全文
摘要:左程云算法与数据结构课 https://www.bilibili.com/video/BV13g41157hK?p=2&spm_id_from=pageDriver 题目描述 已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请
阅读全文
摘要:把数组分成三部分,小于划分值、等于划分值和大于划分值三部分(荷兰国旗问题),然后在 < 区 和 > 区 在用快速排序。 这种方法每次都是固定了一批数,而不是像传统的快速排序算法一样每次都只是固定了划分值的位置。 public class QuickSort { public static void
阅读全文

浙公网安备 33010602011771号