OJ题
敲木鱼的熊
|(•_•) |•_•) |_•) |•) | )
展开
-
Java 求数组中前k小的元素
就是将数组里的元素放进优先级队列(堆)里,然后取优先级队列的前k个数就好了。至于什么是优先级队列,看这里!【前一篇博客的链接插这里】自己以前好笨啊!!!怎么都想不转这个问题! //求最小的k个数 // (这种问题用优先级队列可简单了,不用纠结PriorityQueue为什么要这么用,因为它是定义优先级队列的,且它的底层是一个小堆,它就是那么个用法) public int[] samlllestk(int[] arr,int k){ if(arr==null|.原创 2020-10-10 21:37:25 · 648 阅读 · 0 评论 -
Java 根据二叉树创建字符串:你需要采用前序遍历(根 左 右)的方式,将一棵二叉树转换成一个由括号和整数组成的字符串。
你需要采用前序遍历(根 左 右)的方式,将一棵二叉树转换成一个由括号和整数组成的字符串。空结点则用一对空括号“()”表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。例如:思路: (1)从根节点开始向下判断,若根节点为空,直接返回;(2)若根结点不为空则将根节点的值放进sb序列;(3)再判断根节点的左孩子是否为空,若不为空则在sb序列中加入"(",使当前节点成为根结点,即递归自己(将t.left传进当前函数),将当前的根放进序列之后,继续判断当前根的左孩子是否为空,.原创 2020-10-07 19:59:03 · 315 阅读 · 0 评论 -
Java 根据一棵树的前序遍历与中序遍历构造二叉树或者根据一棵树的中序遍历与后序遍历构造二叉树
1. 根据一棵树的前序遍历与中序遍历构造二叉树思路:遍历前序遍历找到前序遍历的结点在中序遍历当中的位置其左边就是左子树右边就是右子树更详细的思路在代码块的注释中public class Tree{ private class Node{ int val; Node left; Node right; public Node(int val) { this.val = val;原创 2020-10-05 19:23:04 · 485 阅读 · 0 评论 -
Java 输入一棵二叉搜索树,将该搜索二叉树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
二叉搜索树又称二叉排序树,它或许是一棵空树,或许是具有以下性质的二叉树:★若它的左子树不为空,则左子树上所有节点的值都小于根结点的值★若它的右子树不为空,则右子树上所有节点的值都大于根节点的值★它的左右子树也分别为二叉搜索树例如:...原创 2020-10-05 11:21:50 · 220 阅读 · 1 评论 -
Java 二叉树的层序遍历
代码中的二叉树长这个样子↓↓↓层序遍历的思路:第①种思路:在一棵二叉树里面,层序遍历时先将根结点放入队列,当根结点的左和右不为空时,就弹出队首元素,再将根节点的左和右入队列,继续弹出队首元素,,,如此循环,直至层序遍历完该二叉树,若根结点的左和右为空的话,弹出队首元素后,打印,结束循环。第②种思路:将每一层的数据都放进一个小list中,然后再将所有的list放进一个大的list中。import java.util.*;import java.util.Queue;/*class Nod原创 2020-10-01 16:40:29 · 3689 阅读 · 0 评论 -
Java 根据已有的字符串(前序遍历的字符串已告知)创建一颗二叉树,并输出该树的中序遍历和后序遍历
代码中的二叉树长这个样子↓↓↓import java.util.Scanner;import java.util.Stack;public class Build { private static class Node { char val; Node left; Node right; public Node(char val) { this.val = val; } }原创 2020-10-01 12:11:45 · 713 阅读 · 0 评论 -
Java 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先
代码中的二叉树长这个样子↓↓↓找到该树中两个指定节点的最近公共祖先,有三种情况,如图:import java.util.*;import java.util.Queue;//下面的所有求结点总数的,和求叶子结点个数的题,均使用的遍历方法是前序遍历class Node{ public char val; public Node left;//左孩子 public Node right;//右孩子 public Node(char val){原创 2020-10-01 11:59:40 · 809 阅读 · 0 评论 -
Java 判断两棵二叉树是否相同和对称;判断一棵二叉树是否是对称的,平衡的,完全的二叉树
代码中的二叉树长这个样子↓↓↓1、构造二叉树2、判断两棵二叉树是否完全相同【即前中后序遍历的结果相同】3、判断一棵树是否是另一棵树(s)的子树(t),前提是这两棵树都不为空【即在一棵树里能找到另一棵树】4、判断是否是对称二叉树【对称二叉树:两棵树的根结点,具有相同的值,且每棵树的右子树都与另一棵树的左子树镜像对称】5、判断一颗二叉树是否是平衡二叉树【平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过(小于等于)1,并且左右两个子树都是一棵平衡二叉树】6、判断一棵二叉树是否是一棵原创 2020-10-01 11:41:12 · 579 阅读 · 0 评论 -
Java 在二叉树里找某一个确定的值
代码中的二叉树长这个样子↓↓↓import java.util.*;import java.util.Queue;//下面的所有求结点总数的,和求叶子结点个数的题,均使用的遍历方法是前序遍历class Node{ public char val; public Node left;//左孩子 public Node right;//右孩子 public Node(char val){ this.val=val; }}public原创 2020-10-01 10:14:26 · 412 阅读 · 0 评论 -
Java 求二叉树的结点数、叶子结点数、高度
代码里的二叉树长这个样子↓↓↓1、构造二叉树2、(1)求二叉树里有多少个结点——(2)子问题思路—求结点个数(左子树+右子树+根结点的个数)3、(1)求二叉树里有多少个叶子结点——(2)子问题思路—求叶子结点个数4、求二叉树的高度5、求第k层的结点数。import java.util.*;import java.util.Queue;//下面的所有求结点总数的,和求叶子结点个数的题,均使用的遍历方法是前序遍历class Node{ public char val;原创 2020-09-30 20:54:13 · 5917 阅读 · 0 评论 -
Java 二叉树的前、中、后序遍历(递归+非递归)
代码中的图长这个样子↓↓↓//非递归里的两部分代码思路过程完全一样,只不过是后者要求返回值为listimport java.util.*;import java.util.Queue;class Node{ public char val; public Node left;//左孩子 public Node right;//右孩子 //为什么把val的类型定义为char类型,输出的就是字母呢???定义为int类型输出的就是ASCII码对应的值??? //原创 2020-09-30 20:10:50 · 164 阅读 · 0 评论 -
OJ题——小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫(牛客网)
原题目地址小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。为了让问题简单,假设这是一个n*m的格子迷宫,迷宫每个位置为0或者1,0代表这个位置有障碍物, 小青蛙达到不了这个位置;1代表小青蛙可以达到的位置。 小青蛙初始在(0,0)位置,地下迷宫的出口在(0,m-1)(保证这两个位置都是1,并且保证一定有起点到终点可达的路径),小青蛙在迷宫中水平移动一个单位...原创 2020-03-19 22:05:59 · 412 阅读 · 0 评论 -
OJ题——输入一行字符串,计算其中A-Z大写字母出现的次数(牛客网)
原题目地址输入一行字符串,计算其中A-Z大写字母出现的次数import java.util.Scanner;public class Main6 { public static void main(String[] args) { Scanner input=new Scanner(System.in); int[] nums=new int[2...原创 2020-03-19 21:56:16 · 2310 阅读 · 1 评论 -
OJ题——写出一个程序,接受一个十六进制的数,输出该数值的十进制表示(牛客网)
原题目地址写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )//写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串//indexStr=str.substring(2);是切掉str前两个字符,并将后面的部分赋给indexStr//Integer.parseInt(indexStr,16)将16进制的indexStr转换为10进制imp...原创 2020-03-19 21:31:59 · 1198 阅读 · 0 评论 -
OJ题——百万富翁问题(牛客网)
原题目地址一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你10 万元,你第一天给我1 分钱,第二天2 分钱,第三天4 分钱……这样交换 30 天后,百万富翁交出了多少钱?陌生人交出了多少钱?(注意一个是万元,一个是分)该题没有输入:public class Main4 { public static void main(String[] args...原创 2020-03-19 20:59:30 · 3165 阅读 · 0 评论 -
OJ题——小孩上楼梯(牛客网)
原题目地址有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。import java.util.Scanner;public class Main3 { /*public int c...原创 2020-03-19 20:48:15 · 411 阅读 · 0 评论 -
OJ题——请编写一个方法,输出0到n(包括n)中数字2出现了几次。给定一个正整数n,请返回0到n的数字中2出现了几次(牛客网)
请编写一个方法,输出0到n(包括n)中数字2出现了几次。给定一个正整数n,请返回0到n的数字中2出现了几次。import java.util.*;public class Main1 { public int countNumberOf2s(int n) { // write code here int count=0; for(i...原创 2020-03-19 20:17:11 · 1015 阅读 · 0 评论 -
OJ题——在霍格沃茨找零钱(牛客网)
原题目地址如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱P和他实付的钱A,你的任务是写一个程序来计算他应该被找的零钱。import java.util.Scanner;public class Main2 { p...原创 2020-03-19 20:10:47 · 269 阅读 · 0 评论 -
OJ题——(说反话)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出(牛客网)
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); String s=input.nextLine(); String[] words=s.sp...原创 2020-03-19 19:41:29 · 3773 阅读 · 0 评论 -
OJ题——对N个长度最长可达到1000的数进行排序(牛客网)
原题目地址import java.util.Arrays;import java.math.BigInteger;import java.util.Scanner;public class Main7 { public static void main(String[] args) { Scanner input=new Scanner(System.in); ...原创 2020-03-19 19:24:57 · 270 阅读 · 0 评论 -
OJ题——给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数(牛客网)
原题目地址import java.util.Scanner;public class Main6 { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); int m=input.next...原创 2020-03-19 18:48:57 · 3655 阅读 · 2 评论 -
OJ题——判断N是否是守形数(牛客网)
原题目地址import java.util.Scanner;public class Main1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); int m=n*n; ...原创 2020-03-19 17:16:05 · 182 阅读 · 0 评论 -
OJ题——输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)(牛客网)
原题目地址import java.util.Scanner;public class Main3 { public static int search(int[] arr,int x){ for(int i=0;i<arr.length;i++){ if(arr[i]==x){ return i; ...原创 2020-03-19 16:56:59 · 1602 阅读 · 0 评论 -
OJ题——对于给定的正整数 n,计算其十进制形式下所有位置数字之和,并计算其平方的各位数字之和(牛客网)
//这道题比较简单,直接贴代码import java.util.Scanner;public class Main2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); while(input.hasNextInt()) { ...原创 2020-03-19 16:45:32 · 2033 阅读 · 0 评论 -
OJ题——北京大学对本科生的成绩施行平均学分绩点制(GPA)(牛客网)
北京大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。 公式如下: 实际成绩 绩点 90——100 4.0 85——89 3.7 82——84 3.3 78——81 3.0 75——77 2.7 72——74 2.3 68——71 2.0 64——67 1.5 60——63 1.0 60以下 0 1.一门课程的学分绩点=该课绩点*该课...原创 2020-03-19 16:30:18 · 2986 阅读 · 0 评论 -
OJ题-将字符串中的大写字母换成小写字母,返回新的字符串(力扣)
题目:思路:import java.util.Scanner;public class toLowerCase { public static String toLowerCase(String str){ if(str==null){ return null; } char[] array=new cha...原创 2020-02-19 14:58:42 · 312 阅读 · 0 评论 -
OJ题-设计循环队列(力扣)
题目:思路:不是每次都进行数字搬移(直到后面没空间了再一次性搬移到前面)//数组中实现对列class MyCircularQueue { private int[] array;//存储空间 private int size;//当前数据个数 private int front;//指向队首下标 private int rear;//指向队尾下一个可...原创 2020-01-21 22:41:35 · 358 阅读 · 0 评论 -
OJ题-实现一个最小栈(力扣)
题目:思路:第一种:import java.util.ArrayList;class MinStack { private ArrayList<Integer> normal;//正常栈 private ArrayList<Integer> min;//最小栈 /** initialize your data structure he...原创 2020-01-21 22:09:22 · 177 阅读 · 0 评论 -
OJ题-用栈实现队列(力扣)
题目:思路:用两个栈将要出队列的元素换个顺序,由先进后出换为先进先出import java.util.ArrayList;class MyQueue { private ArrayList<Integer> in;//申请入的栈 private ArrayList<Integer> out;//申请出的栈 /** Initialize ...原创 2020-01-21 20:07:54 · 270 阅读 · 0 评论 -
OJ题-用队列实现栈(力扣)
题目:import java.util.LinkedList;class MyStack { private LinkedList<Integer> queue;//表示它是一个队列 /** Initialize your data structure here. */ public MyStack() {//栈的构造方法中,对队列进行构造 ...原创 2020-01-20 17:06:46 · 205 阅读 · 0 评论 -
OJ题-括号匹配问题(力扣)
题目:思路:无效的括号匹配:左(右)括号多,左右不匹配遍历字符串的每个字符:若是左括号:入栈;若是右括号则判断:栈是空的(不匹配:右括号多了)出栈:若左右括号不匹配:不匹配否则继续循环若栈不为空:不匹配否则匹配Stack stack=new Stack();stack.push(c);//压栈stack.pop();//出栈char c=stack.top();//获取栈...原创 2020-01-20 16:31:27 · 1201 阅读 · 0 评论 -
OJ题-复杂链表的复制(链表的深拷贝)(力扣)
题目:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。思路://链表的深拷贝/*public class CNode { int val; CNode next = null; CNode random = null; CNode(int val) { this.va...原创 2020-01-18 20:14:08 · 186 阅读 · 0 评论 -
OJ题-给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null(力扣)
题目:> 思路:/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */...原创 2020-01-17 20:21:25 · 197 阅读 · 0 评论 -
OJ题-编写一个程序,找到两个单链表相交的起始结点(力扣)
题目:编写一个程序,找到两个单链表相交的起始节点。思路:一个长链表一个短链表,求出两个链表的长度后确认哪个时longer,哪个是shorter,求出两个链表的长度差diff,先让长链表(longer)走diff步,再比较longer和shorter,如果不相交就各走一步,相交的话就返回longer,即找到了两个链表相交的结点/** * Definition for singly-li...原创 2020-01-17 18:13:05 · 552 阅读 · 0 评论 -
OJ题-判断一个链表是否是回文结构(牛客网)
题目:思路:先找出链表的中间结点,然后将中间结点之后的结点逆置,将逆置后的结点放在一个新链表中,将新链表中的元素与原链表中的元素比较,如果都相同,那就返回true,若有一个不同就返回falseimport java.util.*;/*public class ListNode { int val; ListNode next = null; ListNod...原创 2020-01-17 16:47:42 · 205 阅读 · 0 评论 -
OJ题-删除链表中重复的结点(牛客网)
思路:/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode deleteDuplication(Lis...原创 2020-01-16 20:59:06 · 122 阅读 · 0 评论 -
OJ题-编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前(牛客网)
import java.util.*;/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Partition { public ListNode partitio...原创 2020-01-16 15:56:55 · 700 阅读 · 0 评论 -
OJ题-将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有结点组成的(力扣)
题目:思路:(第一种)用递归的思路:将两个链表中的元素进行比较,然后将大的结点跟在小的结点后面/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * }...原创 2020-01-15 20:14:21 · 910 阅读 · 0 评论 -
OJ题-输入一个链表,输出该链表中倒数第k个结点(牛客网)
题目:输入一个链表,输出该链表中倒数第k个结点思路:先求出长度,len-k,就是倒数第k个结点/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution {...原创 2020-01-14 18:22:36 · 590 阅读 · 0 评论 -
OJ题-给定一个带有头结点head的非空单链表,返回链表的中间结点(力扣)
题目:思路:先求出链表的长度,再除2,然后遍历链表求出中间结点/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Soluti...原创 2020-01-14 18:02:37 · 694 阅读 · 0 评论