算法刷题
面试准备
BIG_GENERAL_DD
好好学习,天天向上.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表中环的入口地址 (Java实现)
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { ...原创 2021-03-30 19:43:00 · 203 阅读 · 0 评论 -
删除链表中重复的节点 (Java实现)
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5https://blog.nowcoder.net/n/28870a5b1326448aa3315abf3b5443a9?f=comment// 递归写法,比较容易理解,但当链表基本无重复节点时,效率不高。/* public class ListNode ...转载 2021-03-30 19:37:46 · 399 阅读 · 0 评论 -
复杂链表的复制 (Java实现)
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)https://blog.nowcoder.net/n/18002ef9a8604b4f8ea78eb830b15fa9?f=commentimport java.util.HashMap;public class Solution { ..转载 2021-03-30 19:37:52 · 301 阅读 · 0 评论 -
两个链表的第一个公共节点 (Java实现)
输入两个链表,找出它们的第一个公共结点。难点:公共节点如何理解?公共节点 指的是 公共节后的内容是一样的,https://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46先统计两个链表的长度,如果两个链表的长度不一样,就让链表长的先走,直到两个链表长度一样,这个时候两个链表再同时每次往后移一步,看节点是否一样,如果有相等的,说明这个相等的节点就是两链表的交点,否则如果走完了还没有找到相等的节点,说..转载 2021-03-29 17:06:22 · 424 阅读 · 0 评论 -
合并2个排序的链表 (Java实现)
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Merge(ListNode list1,ListNode list2.原创 2021-03-29 16:01:12 · 213 阅读 · 0 评论 -
反转链表 (Java实现)
输入一个链表,反转链表后,输出新链表的表头。没啥说的,直接迭代。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { if(h..原创 2021-03-29 15:39:48 · 245 阅读 · 0 评论 -
链表中倒数第K个节点 (Java实现)
输入一个链表,输出该链表中倒数第k个结点。如果该链表长度小于k,请返回空。思路: 快慢指针。import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */public class Solution { /** .原创 2021-03-29 15:34:05 · 470 阅读 · 0 评论 -
从尾到头打印链表
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。难点: 迭代法对单链表进行翻转。(主要是其中的新建的3个节点指针的操作顺序)/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import ...原创 2021-03-29 15:07:43 · 349 阅读 · 0 评论 -
按之字形打印二叉树 (Java实现)
请实现一个函数按照之字形打印二叉树。即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:是直接基于 多行打印二叉树的题解, 在对偶数行进行逆序,即可满足条件。但是奇怪的是,如下的代码,总是报错:// import java.util.ArrayList;// /*// public class TreeNode {// int val = 0;// TreeNode left =...原创 2021-03-29 14:49:19 · 534 阅读 · 0 评论 -
将二叉树打印成多行 (Java实现)
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。典型的层序遍历import java.util.*;public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<Integer>(); if(root..转载 2021-03-29 14:02:57 · 240 阅读 · 0 评论 -
二叉树的下一个节点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。https://blog.nowcoder.net/n/37b2e6170ffb4acaa27f67f88b1b1922?f=comment时间复杂度:O(n)O(n)空间复杂度:O(n)O(n)/*public class TreeLinkNode { int val; TreeLinkNode left = null; .转载 2021-03-29 12:39:49 · 175 阅读 · 0 评论 -
平衡二叉树 (Java实现)
输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。https://blog.nowcoder.net/n/7148665d45924433a272c7b99ca79311?f=comment平衡二叉树的定义是左右子树高度差不超过1,同时左右子树也是平衡二叉树,于是代..转载 2021-03-29 12:15:43 · 258 阅读 · 0 评论 -
序列化/反序列化二叉树 (Java实现)
请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通过自己.原创 2021-03-29 11:47:56 · 344 阅读 · 0 评论 -
二叉搜索树的第K个节点 (Java实现)
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。思路: //利用二叉搜索树的特性, 左子树的节点比根节点值小,右子树的节点比根节点值大 // 对二叉搜索树进行前序遍历, 就是一个升序的 数据结构 // 可以将二叉搜索树的节点存在一个列表结构中, 从而将题目转换为求解 下标为第k-1个的节点/*public class TreeNode { int val = 0; TreeNode left = null; ...原创 2021-03-28 23:00:01 · 261 阅读 · 0 评论 -
对称二叉树(Java实现)
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路: 新建一个镜像二叉树,然后再来比较两个二叉树是否相同。 难点,另外构建2个辅助函数,2个辅助函数中分别递归。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { .原创 2021-03-28 18:24:50 · 419 阅读 · 0 评论 -
二叉树的深度 (Java实现)
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。递归解法:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*///递归左右子树,比较左右侧的.原创 2021-03-28 17:33:38 · 218 阅读 · 0 评论 -
BST二叉搜索树的后序遍历 (Java实现)
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { int len_sq = sequence.length; if( sequence == null || len_sq.原创 2021-03-28 17:00:11 · 226 阅读 · 0 评论 -
打印二叉树(Java实现)
从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路: 层次遍历;import java.util.ArrayList;import java.util.Queue; // 此处增加了一个Queue import java.util.LinkedList; // 此处增加一个 LinkedList/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode r..原创 2021-03-28 16:06:04 · 1658 阅读 · 0 评论 -
二叉树翻转/镜像 (Java实现)
操作给定的二叉树,将其变换为源二叉树的镜像。Leetcode226 翻转二叉树import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */public class So.原创 2021-03-28 14:57:02 · 614 阅读 · 0 评论 -
二叉树子结构 (Java实现)
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:约定空树不是任意一个树的子结构)/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { // 被调用函数..转载 2021-03-28 14:33:05 · 214 阅读 · 0 评论 -
重建二叉树 (Java实现)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 (注意:树中没有重复值)假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode ri.原创 2021-03-28 13:50:56 · 458 阅读 · 0 评论 -
C++刷题//二维数组
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { int row = array.size(); int col = ar...原创 2020-08-19 23:39:10 · 720 阅读 · 0 评论
分享