![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
大玟啊
任重道远。
如果对博客有任何问题和建议或者交流,QQ1758864807
展开
-
从尾到头打印链表(java)剑指offer
题目描述:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。方法:反转链表/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;public class Solu原创 2020-08-18 21:39:50 · 160 阅读 · 0 评论 -
字符串中的第一个唯一字符 java hashmap
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2class Solution { public int firstUniqChar(String s) { //用hashmap解决,把字符串中每个字符出现的次数保存在一个散列表中 HashMap<Character,Integer> code = new HashMap<C原创 2020-08-04 21:59:40 · 243 阅读 · 0 评论 -
汽水瓶 java
题目描述:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示原创 2020-08-02 21:34:44 · 199 阅读 · 0 评论 -
二叉搜索树笔记java-----查找、插入、删除
一、二叉搜索树又称二叉排序树它或者是一棵空树,或者是具有以下性质的二叉树:1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2.若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3.它的左右子树也分别为二叉搜索树二、二叉搜索树的特点1.二叉搜索树进行中序遍历,可以得到一个有序序列2.树中最左侧节点一定是最小的节点,最右侧节点一定是最大的节点三、查找-检测val是否在二叉搜索树中 public static class BSTNode{ BSTNode原创 2020-08-01 15:56:14 · 111 阅读 · 0 评论 -
寻找第K大 java
[编程题]寻找第K大有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。测试样例:[1,3,5,2,2],5,3返回:2解题思路:1.从大到小进行快速排序;2.返回a[K-1];import java.util.*;public class Finder { public int findKth(int[] a, int n, int K) { quickS原创 2020-07-31 21:44:58 · 451 阅读 · 1 评论 -
前K个高频单词
给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。示例 2:输入: [“the”, “day”, “is”, “sunny原创 2020-07-27 19:43:04 · 207 阅读 · 0 评论 -
旧键盘 Java HashSet
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入描述:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。输出描述:按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。示例输入:7_This_is_a_tes原创 2020-07-26 22:04:30 · 83 阅读 · 0 评论 -
宝石与石头 Java实现
**题目:**给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0class Solution { public int numJewelsInSton原创 2020-07-26 09:16:36 · 240 阅读 · 0 评论 -
复制带随机指针的链表(Java HashMap实现)
**题目:**给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。示例 1:输入:head = [[7,null],[13,0],[11,4],[1原创 2020-07-24 09:33:06 · 142 阅读 · 0 评论 -
只出现一次的数字(Java 用Set实现)
**题目:**给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4第一种方法:用Set实现class Solution { public int singleNumber(int[] nums) { Set<Integer> s=new Hash原创 2020-07-24 09:24:25 · 224 阅读 · 0 评论 -
部分排序,给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。
题目:给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]输出: [3,9]class Solution { public int[] subSort(int[] array) { //将arra...原创 2020-07-20 00:02:18 · 2039 阅读 · 0 评论 -
翻转二叉树 递归
题目:翻转一棵二叉树。例如:输入: 4/ 2 7/ \ / 1 3 6 9输出: 4/ 7 2/ \ / 9 6 3 1public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } class Solution { public TreeNod原创 2020-06-14 16:47:54 · 150 阅读 · 0 评论 -
二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } class Solution {原创 2020-06-14 09:02:16 · 160 阅读 · 0 评论 -
对称二叉树(递归和迭代)
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3方法1:递归对称满足条件:1、两个根节点具有相同的值2、每个树的右子树和另一个树的左子树对称public class TreeNode { int val; TreeNode left;原创 2020-06-13 21:53:00 · 173 阅读 · 1 评论 -
合并两个有序链表(两种解法)
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:1->2->4, 1->3->4输出:1->1->2->3->4->4public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } class Solution { pub原创 2020-06-13 20:49:42 · 822 阅读 · 0 评论 -
二叉树的最近公共祖先。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”思路:第一种求解方式:如果二叉树采用双亲表示法或者孩子双亲表示法,就可以把问题转换为链表相交求交点class Solution { pub...原创 2020-04-23 20:01:43 · 487 阅读 · 0 评论 -
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)
例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。import java.util.Scanner;class BTNode{ public BTNode(char val){ this.val=val; } BTNode left=null;...原创 2020-04-22 21:03:25 · 2962 阅读 · 0 评论 -
根据一棵树的中序遍历与后序遍历构造二叉树。力扣
思路:1、从后序结果中取树根节点的内容2、在中序遍历结果中找根节点的位置rootIdx,然后将中序数据分割成左右两部分3、创建根节点,递归创建根节点的右子树,递归创建根节点的左子树class Solution { int index=0; private TreeNode BuildTree(int[] inorder,int left,int right,int[] po...原创 2020-04-22 13:46:53 · 363 阅读 · 0 评论 -
根据一棵树的前序遍历与中序遍历构造二叉树。力扣
思路:1、从前序结果中取树根节点的内容2、从中序遍历中找到根的位置pos,然后将中序数据分割成两部分[ left , pos )和[ pos+1 , right ]3、创建根节点。递归创建根节点的左子树递归创建根节点的右子树class Solution { int index=0;//index是为了从前序遍历中找根节点的位置 //preorder:前序遍历结果 ...原创 2020-04-21 07:57:22 · 197 阅读 · 0 评论 -
(最小K个数)设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))class Solution { public int[] smalles...原创 2020-04-18 08:16:35 · 861 阅读 · 0 评论 -
统计回文。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “aba”,B...原创 2020-04-16 21:55:17 · 5005 阅读 · 0 评论 -
二叉树的层序遍历
class Solution { public List<List<Integer>> levelOrder(TreeNode root){ List<List<Integer>> ret=new ArrayList<>(); if(null==root){ return ...原创 2020-04-14 14:48:38 · 88 阅读 · 0 评论 -
判断一棵树是不是完全二叉树
public boolean isCompleteTree() { //空树是完全二叉树 if (null == root) { return true; } //树非空的情况 Queue<BTNode> q = new LinkedList<>(); q.offer(root); boolean is...原创 2020-04-13 17:07:18 · 149 阅读 · 0 评论 -
力扣 给定一个二叉树,判断它是否是高度平衡的二叉树
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。思路:1、若为空树,返回true2、求root左子树高度leftHeight和右子树高度rightHeight3、检测root左右子树是否满足平衡二叉树定义即高度差的绝对值4、递归检测:root左子树是否为平衡树&&root右子树是否为平衡树class Solution { ...原创 2020-04-09 07:38:25 · 703 阅读 · 0 评论 -
(另一个树的子树)给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。
题目:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。思路:1、t和s子树中的结构一样(t是s的子树)2、s和t是相同结构的树3、空树可以认为是任意二叉树的子树。若t为空树,s不为空树,则t也是s的一颗子树class Solution { //判断两树是否...原创 2020-04-08 07:10:20 · 320 阅读 · 0 评论 -
给定两个二叉树,编写一个函数来检验它们是否相同。(相同的树)
class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if(null==p&&null==q){ return true; } //p和q至少有一个是空树 if(null==p||null==q){ ...原创 2020-04-02 21:23:01 · 324 阅读 · 0 评论 -
二叉树笔记及代码实现
一、树形结构1、特点1、树是一种非线性的数据结构。2、有一个特殊的节点,称为根节点,根节点没有前驱节点。3、树是递归定义的。4、子树不相交。5、除了根节点外,每个节点有且仅有一个父节点。6、一颗 N 个节点得树有 N-1 条边。2、概念1、节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为62、树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为6...原创 2020-04-01 22:01:26 · 363 阅读 · 0 评论 -
Java实现扑克牌以及抓牌的实现
import java.util.ArrayList;import java.util.List;import java.util.Random;class Card{//牌的结构 Card(String suit,int rank){ this.suit=suit; this.rank=rank; } @Override p...原创 2020-01-06 12:51:35 · 855 阅读 · 0 评论 -
图书管理系统Java
1、简单的登录2、管理端1、查阅书籍2、增加书籍3、删除书籍4、打印书籍列表5、退出系统3、用户端1、查找书籍2.、借阅书籍3.、归还书籍4、打印书籍列表5、退出系统4、类的设计1、创建图书相关的类2、创建操作相关的类3、创建用户相关的类4、进行整合5、代码1、图书类book1、Bookpackage com.bit.book;public clas...原创 2019-11-19 12:14:03 · 1170 阅读 · 0 评论 -
Java 猜数字游戏(1-100)
import java.util.Scanner;public class Test { public static void game(){ int ranNumber=(int)(Math.random()*100+1);//100可以任意改成需要的范围 Scanner scan=new Scanner(System.in); whi...原创 2019-10-29 18:00:11 · 5834 阅读 · 0 评论 -
Java 输出一个整数的每一位
import java.util.Scanner;public class Test { public static void fun(int num){ if(num>9){ fun(num/10); } System.out.println(num%10); } public st...原创 2019-10-29 17:13:56 · 993 阅读 · 0 评论 -
Java获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
import java.util.Scanner;public class Test { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("请输入数字:"); int value=scan.ne...原创 2019-10-29 17:00:42 · 555 阅读 · 0 评论 -
实现交换两个变量的值。要求:需要交换实参的值。(Java)
import java.util.Scanner;class Exchange { public int num1; public int num2; //实现交换两个数的值 public void exchange() { int temp = num1; num1 = num2; num2 = temp; ...原创 2019-10-27 00:33:10 · 328 阅读 · 0 评论 -
设计一个包含多个构造函数的类,并分别用这些构造函数来进行实例化对象。
class Person { public String name; public String sex; public int age; public String hobby; public Person(String name, String sex, int age,String hobby) { this.name = name;...原创 2019-10-27 00:18:35 · 547 阅读 · 0 评论 -
编写一个类Calculator,有两个属性num1,num2,这两个数据的值,不能在定义的同时初始化,最后实现加减乘 除四种运算(Java)
1、可以自行选择加减乘除import java.util.Scanner;class Calculator{ public double num1; public double num2; //实现加法 public void add(){ System.out.println(num1 + " + " + num2 + " = " + (nu...原创 2019-10-27 00:01:32 · 752 阅读 · 0 评论 -
(Java)写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
import java.util.Scanner;public class Test { public static void fun(int num) { int count = 0; //保存“1”个数的数 while (num >0) { if (num % 2 == 1) { c...原创 2019-10-26 18:51:08 · 151 阅读 · 0 评论 -
(Java)求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1+5+3?,则153是一个“水仙花数”。)
public class Test{ public static void main(String[] args) { for (int i = 0; i <=999 ; i++) { int count=0; int sum=0; int tmp=i; while(tm...原创 2019-10-26 11:10:48 · 505 阅读 · 0 评论 -
Java打印乘法口诀表(任何数)
1、9*9的乘法口诀表public class Test{ public static void mul(int num){ for (int i = 1; i <=num; i++) { for (int j = 1; j <=i ; j++) { System.out.print(j+"*"+i+"=...原创 2019-10-26 00:10:24 · 314 阅读 · 0 评论 -
打印1000-2000之间的闰年 用Java方法实现
public class Test{ public static boolean leapYear(int num){ if(num%100!=0&&num%4==0||num%400==0){ //能被4整除并且不能被100整除 或者 可以被400整除的就是闰年 return true; } ...原创 2019-10-25 23:53:07 · 376 阅读 · 0 评论 -
Java 判断一个数是否是素数&&打印1-100之间的素数
创建一个判断素数的方法import java.util.Scanner;public class Test { public static boolean IsPrime(int num){ for (int i = 2; i <=Math.sqrt(num) ; i++) { if(num%i==0){ ...原创 2019-10-25 23:37:12 · 1317 阅读 · 0 评论