- 博客(39)
- 收藏
- 关注
原创 leetcode(java)2. 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。//解决问题的思路,数据结构加逻辑结构,数据结构;新建链表+仅为变量。逻辑结构:逐层判断 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { if (l1==n
2020-06-22 10:27:55 111
原创 leetcode(Java)15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。//hashmap在处理这题时会遇到重复数据无法处理的问题,这时用排序解决 public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); List<List<
2020-05-15 11:23:33 148
原创 规划化数字
现在给你一个数字,请你规范化这一数字输入输入包含多种数据,每组数据一行一个数字,可能为小数,整数,负整数,负小数或者零。数据保证数字没有前导0,保证不会出现欠0元的情况输出输出规范化后的内容import java.util.*;public class meituan2 { public static void main(String[] args) { Sc...
2020-04-28 10:18:35 131
原创 Java输入处理之spit和indexOf
一般需要对输入的数据进行处理,方便我们进行下一步操作。当输入是一个字符串是,我们想要根据特殊字符进行分割,有两种办法:1,spit分割成字符串数组。优点:省事缺点:1,spit本身的坑:当分割符是 . 或者是 | 时,必须使用 \ 进行转义。否则一个会分成长度为0的String数组,另一个是原来长度的数组。2.没有记录特殊字符出现的位置。之后的处理中有可能用到。2,indexO...
2020-04-28 10:15:10 252
原创 Java中的nextInt()和nextLine()
使用nextInt()就要一直使用,因为该方法在读取完之后,游标依然停留在本行,至少还剩一个‘/n’,这会导致接下来的nextLine()读到这个换行符。如果输入给出:10asdasdasdsadgfgfdg想要读到下面的字符,可以:1,一直用nextLine()方法。int k = Integer.parseInt(s.nextLine());String curr = s.n...
2020-04-27 09:41:38 534
原创 leetcode(java)131. 分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。List<List<String>> ans = new ArrayList<List<String>>(); public List<List<String>> partition(String s) { ...
2020-04-17 20:20:25 81
原创 实现LRU缓存
实际上实现LRU有两种办法,一种是通过队列,另一种是通过栈,这里只讨论栈。先上代码,这里通过继承Java的linkedhashmap来实现队列。class LRUCache extends LinkedHashMap<Integer, Integer>{ private int capacity; public LRUCache(int capacity)...
2020-04-08 10:35:52 84
原创 JAVA并发入门(一)
Java并发入门(一)线程安全共享:一个变量可以被多个线程访问什么情况是线程安全的当多个线程访问同一个类时,如果不用考虑这些线程在运行时环境下的电镀和交替执行情况,并且不需要额外地进行同步以及在调用代码时不必作其他的协调,这个类的行为仍然是正确的,那么这种类就是线程安全的。多线程安全问题在没有同步的情况下,一个变量可以被多个线程同时访问,这时就会出现线程安全问题。为了避免这种情况的出...
2020-03-20 20:03:18 83
原创 剑指offer(Java)序列化二叉树
请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字...
2020-03-15 09:51:00 80
原创 剑指offer(Java)删除链表中重复的节点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5public ListNode deleteDuplication(ListNode pHead) { ListNode pre = new ListNode(...
2020-03-10 15:47:20 109
原创 剑指offer(Java)正则表达式匹配
请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配public boolean match(char[] str, char[] pattern){ ...
2020-03-10 10:47:52 95
原创 剑指offer(Java)剪绳子
给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。public int cutRope(int target) { //考虑0 ...
2020-03-09 10:17:08 101
原创 剑指offer(java)表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。import java.util.regex.Pattern;public class Solution { public boolean ...
2020-03-08 16:26:40 93
原创 剑指offer(Java)构建乘积数组
给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)import java.util.ArrayList;public cl...
2020-03-08 10:22:15 77
原创 剑指offer(Java)把字符串转化成整数
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0public class Solution { public int StrToInt(String str) { if (str.length()==0) return 0; int flag =-1; if (str.charA...
2020-03-08 10:20:29 115
原创 剑指offer(Java)反转单词顺序
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?public String Rev...
2020-03-06 10:48:12 145
原创 按之字型打印二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer> > ans = new...
2020-03-05 16:02:24 118
原创 剑指offer(Java)孩子们的游戏
每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,...
2020-03-04 16:16:23 103
原创 剑指offer(Java)二叉搜索树转化为双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。import java.util.*;public class Solution { ArrayList<TreeNode> te = new ArrayList<TreeNode>(); public TreeNode Convert(Tr...
2020-03-04 10:47:02 153
原创 剑指offer(Java)二叉搜索树的后序遍历
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。public boolean VerifySquenceOfBST(int [] sequence) { if (sequence.length==9) return false; return ve(sequence,0,se...
2020-03-04 09:18:36 86
原创 剑指offer(Java)树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。import java.util.*;public class Solution { public int TreeDepth(TreeNode root) { if (root==null)return 0; Queue<Tre...
2020-03-01 15:30:19 64
原创 剑指offer(Java)合并链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。public ListNode Merge(ListNode list1,ListNode list2) { //头指针做法,定义一个指针用来遍历,另一个用来返回结果 ListNode ans = new ListNode(-1); ; ListNode re...
2020-02-07 15:48:30 60
原创 剑指offer(Java)反转链表
输入一个链表,反转链表后,输出新链表的表头。public ListNode ReverseList(ListNode head) { if (head==null||head.next==null) return head; ListNode pre = null; ListNode next = null; while (head...
2020-02-04 10:32:26 41
原创 剑指offer(java)调整数组顺序
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 public void reOrderArray(int [] array) { int len = array.length; if(len <= 1){ // 数组空或长度为1 ...
2020-01-31 11:46:40 174
原创 剑指offer(java)跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。易知 f(n)=f(n-1)+f(n-2)+……f(1)f(n-1)=f(n-2)+……f(1)两式相减得f(n)=2f(n-1)实际上就是在跳到第n级台阶前,青蛙可以跳n次一级,n-1次2级。。。也就是有f(n)=f(n-1)+f(n-2)+……f(1)因此,f(n-1)=f(...
2020-01-29 10:17:20 91
原创 剑指offer(Java)用两个栈来实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void...
2020-01-28 11:01:51 69
原创 剑指offer{java}重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if (pre.len...
2020-01-27 12:02:03 51
原创 LeetCode(java)868. Binary Gap
Given a positive integer N, find and return the longest distance between two consecutive 1’s in the binary representation of N.If there aren’t two consecutive 1’s, return 0. public int binaryGap(int...
2020-01-10 10:18:33 80
原创 LeetCode(java)240. Search a 2D Matrix II
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted in ascending from left to right.Integers in each c...
2020-01-09 10:21:03 94
转载 LeetCode(java)287. Find the Duplicate Number
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, fi...
2020-01-08 14:55:45 99
原创 java基础--string类方法总结
想要解决java中关于字符串问题,详细了解java的string类的各个方法十分重要。这里按照遇到问题的情景将方法进行分类并总结。格式为 序号 返回类型 方法名(参数)一,遍历类以下方法通常用于遍历字符串的过程中1 char charAt(int index)返回指定索引处的 char 值。2 int length()返回此字符串的长度。二,判断类该类方法用于字符串的判断,包...
2020-01-02 15:41:39 244
原创 LeetCode(java)20. Valid Parentheses
Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.An input string is valid if:Open brackets must be closed by the same type of bra...
2020-01-02 11:04:32 105 1
原创 LeetCode(java)300. Longest Increasing Subsequence
Given an unsorted array of integers, find the length of longest increasing subsequence.public int lengthOfLIS(int[] nums) { if (nums.length == 0) return 0; int[] dp = new int[nums.len...
2019-12-30 09:54:31 58
原创 LeetCode(java)Perfect Squares
Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n.public int numSquares(int n) { int[] ret = new int[n + 1];//对于一个数如何开状态...
2019-12-28 11:12:39 94
原创 LeetCode(java)Unique Paths
A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the bot...
2019-12-28 09:35:27 61
原创 LeetCode(java)Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), ...
2019-12-27 16:45:14 53
原创 LeetCode(java)Minimum Path Sum
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You can only move either down or right at an...
2019-12-27 15:17:59 106
原创 LeetCode(java)thirdMax
Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).if(nums == null || nums.length...
2019-12-23 15:01:30 57
原创 leetcode刷题java
LeetcodeTwo sumjavaTwo sumjava// An highlighted blockpublic int[] twoSum(int[] nums, int target) { int[] res = { 0, 0 }; for (int i = 0; i < nums.length; i++) { for ...
2019-12-13 10:16:59 64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人