自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 String_NC141

判断回文 描述 给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。 解题 Solution /** * 判断回文数 * 1.str[i]!=str[len-i-1] 2.双指针法 */ public class Solution { public boolean judge(String str){ int n=str.length(); for (int i = 0; i < n/2; i++) {

2021-07-19 09:21:21 82

原创 String_NC103

反转字符串 描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000) 解题 Solution public class Solution { public String solve(String str){ if(str.length()==0||str.length()==1) return str; char[] strs = str.toCharArray(); int n= strs.length;

2021-07-19 09:20:48 76

原创 String_NC55

最长公共前缀 描述 编写一个函数来查找字符串数组中的最长公共前缀。 解题 Solution1 /** * 最长公共前缀 * 字符串比较 */ public class Solution { public String longestCommonPrefix(String[] strs){ if (strs.length==0) return new String(); if (strs.length==1||strs[0].length()==0) return

2021-07-19 09:20:26 85

原创 String_NC52

括号序列 描述 给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。 解题 Solution /** * 括号序列 * 栈方法 */ import java.util.Stack; public class Solution { public boolean isValid(String s){ if (s.l

2021-07-19 09:19:26 148

原创 String_NC20

数字字符串转化为IP地址 描述 现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。、 解题 Solution /** * 字符串转IP地址 * IP地址为4个整数(0-255),深度遍历+回溯法 */ import java.util.ArrayList; public class Solution { public ArrayList<String> restoreIpAddresses(String s){ ArrayList

2021-07-19 09:18:47 79

原创 Stack_NC90

包含min函数的栈 描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数,并且调用 min函数、push函数 及 pop函数 的时间复杂度都是 O(1) push(value):将value压入栈中 pop():弹出栈顶元素 top():获取栈顶元素 min():获取栈中最小元素 解题 Solution /** * 包含min函数的栈 * 双栈实现 */ import java.util.Stack; public class Solution { Stack&

2021-07-19 09:17:44 83

原创 Number_NC151

最大公约数 描述 求出两个数的最大公约数,如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。 解题 Solution /** * 最大公约数 * 辗转相除法 */ public class Solution { public int gcd(int a, int b){ if (a%b==0) return b; return gcd(b,

2021-07-19 09:17:15 62

原创 Number_NC57

反转数字 描述 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。 解题 Solution /** * 反转数字 * 取余,长整数 */ public class Solution { public static void main(String[] args) { Solution s1 = new Solution(); System.out.println(s1.reverse

2021-07-19 09:15:56 86

原创 List_NC40

两个链表生成相加链表 描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。 解题 单链表 public class ListNode { int val; ListNode next = null; public ListNode(int val) {

2021-07-17 09:52:29 66

原创 List_NC33

合并有序链表 描述 将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。 解题 单链表 public class ListNode { int val; ListNode next = null; public ListNode(int val){ this.val=val; } } Solution /** * 合并有序链表 * 依次比较两个链表未合并部分的头,较小者插入新表的尾 */ public

2021-07-17 09:51:58 59

原创 List_NC3

链表中环的入口节点 描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 解题 单链表 public class ListNode { int val; ListNode next = null; public ListNode(int val) { this.val = val; } } Solution /** * 拆分法 */ public class Solution { public ListNode E

2021-07-17 09:51:25 56

原创 Fibonacci_NC68

跳台阶 描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题 Solution /** * 跳台阶 * 1.递归;2.动态规划;3.优化存储 */ public class Solution { public static void main(String[] args) { Solution s1 = new Solution(); System.out.println(s1.jum

2021-07-17 09:50:55 60

原创 Fibonacci_NC65

斐波那契数列 描述 要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 解题 Solution /** * 斐波那契数列 * 1.递归 2.动态规划 3.优化存储 */ public class Solution { public static void main(String[] args) { Solution solution = new Solution(); System.out.println(solution.F

2021-07-17 09:50:23 76

原创 Array_NC119

最小的K个数 描述 给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 解题 Solution1 /** * 最小K个数 * 快速排序 */ import java.util.*; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int[] input,int k){ ArrayList&

2021-07-17 09:49:52 47

原创 Array_NC118

数组中的逆序对 描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 解题 Solution /** * 数组中的逆序对 * 合并排序 */ public class Solution { private int count=0; public int InversePairs(int [] array){ Merg

2021-07-17 09:49:18 68

原创 Array_NC106

三个数的最大乘积 描述 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)。 解题 Solution1 /** * 求数组中三个数的最大乘积 * 因为数组中有正负数,所以最大乘积为,三个最大值的乘积与两个最小值和最大值的乘积中的较大值 * 快速排序 */ public class Solution { public long solve (int[] A){ if(A.length==3) retur

2021-07-17 09:48:48 80

原创 Array_NC61

两数之和 描述 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的 假设给出的数组中只存在唯一解 例如: 给出的数组为 {20, 70, 110, 150},目标值为90 输出 index1=1, index2=2 解题 Solution1 /** * 数组中两数之和 * 循环遍历 */ public class Solution { p

2021-07-17 09:48:13 150

原创 Array_NC41

最长无重复子序列 描述 给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组 解题 Solution1 /** * 最长无重复子数组 * 哈希表 指针遍历 */ import java.util.HashMap; import java.util.Map; public class Solution { public int maxlengt

2021-07-17 09:47:38 121

原创 华为机试-HJ15

求int型正整数在内存中存储时1的个数 描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。 这个数转换成2进制后,输出1的个数 解题 Solution /** * 求数字二进制中1的个数 * 1,对2取余;2,位运算 */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(Sys

2021-07-16 17:05:17 130

原创 华为机试-HJ7

取近似值 描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 解题 Solution /** * 取近似值 * 大于0.5则进一 */ import java.util.Scanner; public class Main { public static void main(String arg[]){ Scanner scanner = new Scanner(System.in);//键盘获取浮点数

2021-07-16 17:04:27 86

原创 String_NC112

进制转换 描述 给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数 解题 /** * 进制转换 * 1.字符串数组 2.自带 */ public class Solution { public String solve (int M,int N){ if (M==0) return "0"; String s = "0123456789ABCDEF";//字符数组 StringBuffer sb = new StringBu

2021-07-05 09:10:24 46

原创 Tree_NC161

二叉树的中序遍历 描述 给定一个二叉树的根节点root,返回它的中序遍历。 解题 二叉树 public class TreeNode{ int val; TreeNode left = null; TreeNode right = null; public TreeNode(int val){ this.val=val; } } Solution /** * 递归中序遍历,列表 */ import java.util.ArrayList; imp

2021-07-05 09:10:10 52

原创 Tree_NC123

序列化二叉树 描述 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。 二叉树的反序列化是指:根据某种遍历顺序得到

2021-07-05 09:09:54 69

原创 Tree_NC99

树的直径 描述 给定一棵树,求出这棵树的直径,即树上最远两点的距离。包含n个结点,n-1条边的连通图称为树。 解题 树 /** * 树 */ public class Interval { int start; int end; } Solution /** * 找出树中存在的最大权值长度 */ import java.util.Collections; import java.util.LinkedList; import java.util.List; public cla

2021-07-05 09:09:39 150

原创 Tree_NC81

二叉搜索树的第k个结点 描述 给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。 解题 二叉树 public class TreeNode { int val=0; TreeNode left=null; TreeNode right=null; public TreeNode(int val) { this.val = val; } } Solution1 /** * 查找二叉树中的第k个节点 * 非递归中序遍历 */ impo

2021-07-05 09:09:27 63

原创 Tree_NC13

二叉树的最大深度 描述 求给定二叉树的最大深度,最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量。 解题 二叉树 public class TreeNode { int val=0; TreeNode left=null; TreeNode right=null; } Solution /** * 求树高 * 1.深度优先遍历 2.广度优先遍历 */ import java.util.Deque; import java.util.LinkedList; publ

2021-07-05 09:09:14 49

原创 Tree_NC11

将升序数组转化为平衡二叉树 描述 给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST). 解题 二叉树 public class TreeNode { int val=0; TreeNode left=null; TreeNode right= null; public TreeNode(int val) { this.val = val; } } Solution /** * 升序数组转为平衡二叉树 * 利用二分查找法 */ publ

2021-07-05 09:08:59 52

原创 Tree_NC9

二叉树中是否存在节点和为指定值的路径 描述 给定一个二叉树和一个值sum,判断是否有从根节点到叶子节点的节点值之和等于sum 的路径 解题 二叉树 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } Solution /** * 寻找二叉树是否

2021-07-05 09:08:46 65

原创 Tree_NC8

二叉树根节点到叶子节点和为指定值的路径 描述 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径, 解题 二叉树 public class TreeNode { int val=0; TreeNode left=null; TreeNode right=null; public TreeNode(int val) { this.val = val; } } Solution /** * 寻找二叉树的等于指定值

2021-07-05 09:08:28 102

原创 Tree_NC6

二叉树的最大路径和 描述 给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。 这个路径的开始节点和结束节点可以是二叉树中的任意节点 解题 二叉树 public class TreeNode { int val; TreeNode left=null; TreeNode right=null; public TreeNode(int val) { this.val = val; } } Solution /** * 计算最大路径的节点值

2021-07-04 10:35:43 58

原创 String_NC97

字符串出现次数的TopK问题 描述 给定一个字符串数组,再给定整数k,请返回出现次数前k名的字符串和对应的次数。 返回的答案应该按字符串出现频率由高到低排序。如果不同的字符串有相同出现频率,按字典序排序。 对于两个字符串,大小关系取决于两个字符串从左到右第一个不同字符的 ASCII 值的大小关系。 比如"ah1x"小于"ahb",“231”<”32“ 字符仅包含数字和字母 解题 Solution1 /** * Map集合 列表排序 */ import java.util.*; public c

2021-07-04 10:35:21 64

原创 String_NC89

字符串变形 描述 对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。 解题 Solution /** * 单词反转 * 字符串拆分方法 */ import java.util.Stack; public class Solution { public

2021-07-04 10:35:03 100

原创 Stack_NC90

设计getMin功能的栈 描述 实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 解题 Solution /** * 设计getMin功能的栈 * 使用两个栈 */ import java.util.ArrayList; import java.util.Stack; public class Solution { public static Stack<Integer> s =new Stack<Integer>(); pu

2021-07-04 10:34:34 47

原创 Stack_NC76

用两个栈实现队列 描述 用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。 解题 Solution /** * 栈来实现队列操作 */ import java.util.Stack; public class Solution { Stack<Integer> stack1 =new Stack<Integer>(); Stack<

2021-07-04 10:34:20 88

原创 Search_NC160

二分查找— I 描述 请实现无重复数字的升序数组的二分查找 给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1 解题 Solution public class Solution { public static void main(String[] args) { int[] a={-1,0,3,4,6,10,13,14}; int target=13;

2021-07-04 10:33:57 82

原创 Search_NC105

二分查找—II 描述 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1 解题 Solution /** * 数组查找+表中最前位置 * 二分查找方法 */ public class Solution { public int search (int[] nums,int target){ //return twosea

2021-07-04 10:33:32 54

原创 MySort_NC140

排序 描述 给定一个数组,请你编写一个函数,返回该数组排序后的形式。 解题 Solution1 /** * 排序算法 * 快速排序 */ public class Solution { public static void main(String[] args) { int[] arr={5,1,6,2,5}; System.out.println(arr[0]+" "+arr[1]+" "+arr[2]+" "+arr[3]+" "+arr[4]);

2021-07-04 10:33:02 55

原创 LRU_NC93

设计LRU缓存结构 描述 设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能 set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。 若opt=1,接下来两个整数x, y,表示set(x, y) 若opt=2,接下来一个整数x,表示get(x),若x

2021-07-04 10:32:25 72

原创 List_NC133

链表的奇偶重排 描述 给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。注意是节点的编号而非节点的数值。 解题 单链表 public class ListNode { int val; ListNode next=null; ​ public ListNode(int val) { this.val = val; } } Solution /** * 奇偶序号链表转换 * 拆分链表方法 */ pub...

2021-07-04 10:31:39 43

原创 List_NC132

环形链表的约瑟夫问题 描述 编号为 1 到 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后,只剩下一个人,问最后留下的这个人编号是多少? 解题 公式反推 反推过程:(当前index + m) % 上一轮剩余数字的个数 最终剩下一个人时的安全位置肯定为1,反推安全位置在人数为n时的编号 人数为1: 0+1 人数为2: (0+m) % 2+1 人数为3: ((0+m) % 2 + m) % 3+1 人数为4: (((0+m)

2021-07-03 15:52:39 44

空空如也

空空如也

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

TA关注的人

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