自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 已知一颗完全二叉树,求其节点的个数

时间复杂度要求低于0(N),N为这棵树的节点个数思路:一颗完全二叉树L他的节点个数是2L-1;对于一颗满二叉树,顺着他的左子树往下走,我们很快就能知道他的深度以及整棵树节点的大致个数那个区间,然后在顺着头结点右孩子的左子树不停地走,当在深度那一层有节点的时候,那么整个左子树都是满的,因为我们知道深度那么这个时候左子树的个数就是确定的(2(L-1) - 1),递归去求右子数,总结一下:整个...

2019-05-04 16:31:09 1155

原创 是否是平衡二叉树、搜索二叉树、完全二叉树

平衡二叉树平衡二叉树:任何一个节点,左子树和右子树的高度差不能超过1。递归遍历会来到某一个节点3次,这样想办法搜集左子树和右子数上的信息,然后信息整合做判断看看整棵树符不符合标准。考察以每颗节点的树都是平衡的那么整棵树才是平衡二叉树,任何破坏标准的那么整个树就是不标准的。这样的话,走到A这个节点怎么判断以A为头节点的树是平衡的?1.左树是否平衡2.右树是否平衡3.左树和右树的高度4...

2019-05-04 15:40:53 737

原创 二叉树中找到一个节点的后继节点

这个结构比普通的二叉树节点结构多了一个指向父节点的perent指针。假设有一颗Node类型的节点组成二叉树,树中的每个节点的parent指针都正确的指向自己的父节点,头结点的parent指向null。只给一个在二叉树中的某个节点node,请返回实现node的后继节点的函数。在二叉树的中序遍历的序列中,node的下一个节点叫做node的后继节点。在二叉树的中序遍历的序列中,node的前一个节点叫做...

2019-04-28 14:33:37 324

原创 二叉树的递归与非递归遍历

递归遍历 到达每个节点的顺序124442555213666377731这个时候 打印操作放在第一次到达这个节点的时候那么就是前序遍历 1245367打印操作放在第二次到达这个节点的时候那么就是中序遍历 4251637打印操作放在第三次到达这个节点的时候那么就是后序遍历 4526731 public static void preOrderRecur(Node head) { ...

2019-04-27 14:02:22 182

原创 两个单链表是否相交的一系列问题

题目单链表可能有环,也可能无环。给定两个单链表的头结点head1和head2,折两个链表可能相交,也可能不想交。请实现一个函数,如果两个链表相交,请返回相交的第一个节点;如果不想交那么返回null。时间复杂度o(M+N)空间复杂度o(1)1.单链表是否有环2.两个无环单链表第一个相交的节点3.两个有环单链表第一个相交的节点分割线 – ==================1.单链表是...

2019-04-26 13:09:14 340

原创 复制含有随机指针节点的链表

题目一种特殊的链表节点类描述如下:public class Node{public int value;public Node next;public Node rand;public Node(int data){this.value = data;}}Node类中的value是节点值,next指针和正常单链表中next指针的意义一样都是指向下一个节点,rand指针是Node...

2019-04-25 18:35:53 143

原创 将单链表按值划分成左小中间等右边大的形式

题目:给定一个单项链表的头结点dead,节点的值类型都是整型,在给定一个数pivot。实现一个调整链表的函数,将链表调整成左部分值都是小于pivot,中间部分都是等于值pivot,右边部分都是大于值pivot的部分。等同于荷兰国旗问题 public static Node partition1(Node head, int num) { if (head == null) { re...

2019-04-24 17:47:45 363

原创 链表中的回文结构

判断一个链表是否为回文结构题目:给发ing一个链表分头结点,请判断该链表是否为回文结构1->2->1 true1->2->2->1 true15->6->15 true1->2->3 false思路1:每次遍历就进栈,这个时候弹栈的时候就逆序了,然后再次遍历一一比对 -- o(N)的空间复杂度 public static b...

2019-04-24 16:36:43 141

原创 反转单向链表和双向链表

单项链表找到当前头结点前一个节点把下一个节点设置成头结点把原来头结点设置成当前头结点的下一个节点class Node1{ int value; Node1 next; public Node1(int data) { this.value = data; }} public Node1 reverse(Node1 head) { Node1 pre = null; ...

2019-04-22 20:21:52 121

原创 打印两个有序链表的公共部分

类似于归并排序最后的merge过程A>B那么B继续向前走 A<B那么A继续向前走 A=B那么打印并且都向前走public class Node{ public int value; public Node next; public Node(int data) { this.value = data; }}public void printCommonPart(...

2019-04-22 20:01:29 97

原创 固定长度数组实现栈和队列

public class ArrayStack { private Integer[] arr; private Integer index; public ArrayStack(int initSize) { //固定数组大小 if (initSize < 0) { throw new IllegalArgumentException("this init si...

2019-04-20 21:12:40 351

原创 关于排序

冒泡排序 public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = arr.length - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (ar...

2019-04-19 19:16:06 169

原创 理解递归

自己调用自己。。系统内部是怎么实现的看下引例//返回数组的最大值 -- 递归方式public static int getMax(int[] arr, int L, int R) { if (L == R) { //明确终止条件 return arr[L]; } int mid = (L + R) / 2; int maxLeft = getMax(arr...

2019-04-18 19:00:11 146

原创 汉诺塔问题

目标:将A上面的方块移动到C上面 并且不能将大的方块落到小的方块上面注意:灵魂画手已出现共经历了七部大中小 ---- 123一个盘子:大到3两个盘子:小到2 大到3 小到3三个盘子:小到3 中到2 小到2 大到3 小到1 中到3 小到3以此类推:总移动步数:2**n - 1大于三个盘子:可以理解成一个整体 然后按照两个盘子去思考 public static void han...

2019-04-17 19:43:34 164

原创 用一个栈实现另一个栈的排序

一个栈中元素的类型为整型,现在将该栈从栈顶到栈底按从小到大的顺序排列,只需申请一个栈,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?public static void sortStackByStack(Stack<Integer> stack) { Stack<Integer> help = new Stack<Integer>(); w...

2019-04-16 20:23:10 173

原创 仅用递归函数和栈操作逆序一个数

之前用两个栈可以实现队列使用两个栈就直接一个pop()另一个进行push()就可以了归根到底就是把栈底元素放到栈顶才可以这里可以理解为就是使用递归函数来代替另一个栈首先写一个递归输出栈底元素的递归函数弹出栈顶元素还要将剩下的元素原封不动放回去public static int getAndRemoveLastElement(Stack<Integer> stack) {...

2019-04-16 19:01:33 135

原创 具有返回最小值功能的栈

import java.util.Stack;class newStack{ private Stack<Integer> s; private Stack<Integer> sMin; public newStack() { this.s = new Stack<Integer>(); this.sMin = new Stack<In...

2019-04-16 18:18:46 166

原创 用两个栈来实现队列 两个队列实现栈

import java.util.Stack;class newQueue{ Stack<Integer> s1 = new Stack<Integer>(); Stack<Integer> s2 = new Stack<Integer>(); public void add(int value) { s1.push(value);...

2019-04-15 20:41:46 185

原创 在行列都排好序的矩阵中找数

暴力的话时间复杂度到了O(N*M)从数据状况出发考虑还有一种解法例:1 3 4 52 4 6 75 8 9 118 12 13 16假如说是找6我们从左下角开始走一开始是8 比6大 那么就不用考虑8的右面了 直接往上走走到了5 5比6小 那么5上面的都会比6小 向右走走到了8 8比6大 那么8的右面和下面都比6大 向上走走到了4 4比6大 那么4的上面都...

2019-04-15 20:17:47 188

原创 code21

1021 个位数统计 (15 分)给定一个 k 位整数 N=d​k−1​​10​k−1​​+⋯+d​1​​10​1​​+d​0​​ (0≤d​i​​≤9, i=0,⋯,k−1, d​k−1​​>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的...

2019-04-11 20:29:43 357

原创 java实现二叉排序树

二叉排序树非空左子树的所有键值小于其根节点的键值非空右子数的所有键值大于其根节点的键值左右子数都是二叉排序树创建先是创建一棵树 然后进行添加节点比根节点小那么就放到左子树 在进行递归比根节点大那么就放到右子数 在进行递归public void add(Node node) { if (node == null) { return; } if (node.value...

2019-04-11 20:18:35 932

原创 NO.9

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。/*思路:负...

2019-04-10 20:48:01 126

原创 code16

1016 部分A+B (15 分)正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​。例如:给定 A=3862767,D​A​​=6,则 A 的“6 部分”P​A​​ 是 66,因为 A 中有 2 个 6。现给定 A、D​A​​、B、D​B​​,请编写程序计算 P​A​​+P​B​​。输入格式:输入在一行中依次给出 A、D​A​​、...

2019-04-10 20:16:36 746

原创 2.二叉树的应用--二叉树的高度和叶子节点数

树的叶子节点数:判断左右子数是否为空为空即为叶子节点 public void showLeafNode() { if (leftNode == null && rightNode == null) { System.out.print(value); } else { leftNode.showLeafNode(); rightNode.showLe...

2019-04-09 20:15:37 816

原创 1. 最大子列和问题

在线处理每输入一个数据就进行在线的处理发现更大的和那么更新MAX小的和丢弃在任何情况下都能给出最优的解import java.util.Scanner;public class code02 { public static int MaxSubseqSum(int[] arr, int N) { int ThisSum, MaxSum; ThisSum =...

2019-04-07 21:00:35 112

原创 java实现顺序二叉树

//[1, 2, 3, 4, 5, 6]// 第一层1 第二层2 3 第三层 456 以此类推 //顺序存储的二叉树一般只会考虑完全二叉树//第n个元素的左子节点 2n+1 右子节点是2n+2//第n个元素的父节点 (n-1)/2public class ArrayBinaryTree { int[] data; public ArrayBinaryTree(in...

2019-04-07 17:48:21 388

原创 code12

import java.util.Scanner;public class code12 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n = in.nextInt(); if (n ...

2019-04-07 17:21:38 426

原创 java实现链式二叉树

//树的节点class TreeNode{ int value; TreeNode LeftNode; TreeNode RightNode; public TreeNode(int value) { this.value = value; } //设置左儿子 public void setLeftNode(TreeNode LeftNode) { this....

2019-04-06 21:04:09 438

原创 code11

1011 A+B 和 C (15 分)给定区间 [−2​31​​,2​31​​] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,...

2019-04-06 19:43:22 583

原创 java实现双向循环链表

public class DoubleNode { DoubleNode pre = this; //前一个节点 -- 指向自己DoubleNode next = this; //下一个节点 -- 指向自己int data;public DoubleNode(int data) { this.data = data;}//获取数据public int getData() {...

2019-04-05 20:20:57 456

原创 java实现循环链表

public class LoopNode {int data; //节点内容LoopNode next = this; //下一个节点 -- 只有一个节点 这个节点的下一个是自己public LoopNode(int value) { this.data = value;}//获取下一个节点public LoopNode next() { return this.nex...

2019-04-05 20:19:08 551

原创 code9

定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Come...

2019-04-05 19:46:03 329

原创 java实现单链表

class Node { int data; //节点内容 Node next; //下一个节点 public Node(int value) { this.data = value; } //为节点追加节点 -- 需要看这个节点后还有没有其他节点 //有的话 继续向后找 直到找到最后一个节点为止 public void append(Node node) { ...

2019-04-04 20:33:25 135

原创 java实现队列

private int[] elements;public MyQueue1() { elements = new int[0];}//入队 -- 类似于数组中的添加public void add(int element) { int[] newArr = new int[elements.length + 1]; for (int i = 0; i < newArr.le...

2019-04-04 20:07:01 98

原创 java实现栈

private int[] elements;//相当于压子弹的手枪public MyStack1() { elements = new int[0];}//压入一个数据 -- 类似于数组中的添加public void push(int element) { int[] newArr = new int[elements.length + 1]; for (int i = 0;...

2019-04-04 19:56:03 116

原创 java实现数组

private int[] elements; //用于存储数据的数组//初始化public MyArrey1() { elements = new int[0];}//获取长度public int size() { return elements.length;}//数组元素的添加public void add(int element) { int[] newArr...

2019-04-04 19:14:26 719

原创 code8

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​A​1​​⋯A​N−1​​)变换为(A​N−M​​⋯A​N−1​​A​0​​A​1​​⋯A​N−M−1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1...

2019-04-04 19:08:44 519

原创 code7

import java.util.Scanner;public class code7 {//判断数是不是素数public static boolean number(int num) { for (int i = 2; i < num / 2 + 1; i++) { if (num % i == 0) { return false; } } return tr...

2019-04-03 15:23:47 4941

原创 code2

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。import java.util.Scanner;import java.math.;import java.util.ArrayList;import java.util.List;public class code2 {/public static void main(String[] args) {// T...

2019-04-03 14:28:31 529

原创 code6

让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。import java.util.Scanner;public class code15 {public static void mai...

2019-04-01 20:55:37 405

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除