
算法练习
拥抱月光
这个作者很懒,什么都没留下…
展开
-
40.最小的K个数
题目描述(剑指Offer40)输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。示例1输入[4,5,1,6,2,7,3,8],4返回值[1,2,3,4]public class Jzof40 { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer&原创 2021-02-02 09:52:01 · 99 阅读 · 0 评论 -
31.栈的压入,弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { if (pushA.length == 0原创 2021-02-01 11:37:07 · 132 阅读 · 0 评论 -
30.包含min函数的栈
题目描述(剑指Offer30)实现一个包含 min() 函数的栈,该方法返回当前栈中最小的值。public class Solution { private Stack<Integer> dataStack = new Stack<>(); private Stack<Integer> minStack = new Stack<>(); public void push(int node) { dataStack.p原创 2021-02-01 11:34:53 · 102 阅读 · 0 评论 -
09.用两个栈实现队列
题目描述(剑指Offer09)用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.p原创 2021-02-01 11:31:58 · 134 阅读 · 0 评论 -
50.第一个只出现一次的字符位置
题目描述(剑指Offer50)在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)示例1输入"google"返回值4额,首先自己写的(>==<)public static int FirstNotRepeatingChar(String str) { Map<Character,Integer> map = new Lin原创 2021-01-29 11:13:40 · 134 阅读 · 0 评论 -
29.顺时针打印矩阵
题目描述(剑指Offer29)输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.public class Jzof29 { public ArrayList<Integer> printMatrix(int [][] matrix) { Array原创 2021-01-29 10:41:13 · 113 阅读 · 0 评论 -
05.替换空格
题目描述(剑指Offer5)请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。public class Jzof05 { public static String replaceSpace(StringBuffer str) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s原创 2021-01-29 10:09:03 · 122 阅读 · 0 评论 -
03.数组中的重复数字
题目描述(剑指Offer3)在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。示例Input:{2, 3, 1, 0, 2, 5}Output:2首先放一个时间复杂度 O(N),空间复杂度 O(1)的方法,因为数字范围是[0,n-1],就把数字放在它该去的地方,若某个地方已经存在了这个数字,则它是重复的。。public boolean duplicate(in原创 2021-01-29 09:49:32 · 159 阅读 · 0 评论 -
04.二维数组中的查找
题目描述(剑指Offer4)在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例1输入:7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]返回值true代码:public class Jzof04 { public boolean Find(int target, int [][] arr原创 2021-01-29 09:36:32 · 136 阅读 · 0 评论 -
LeetCode1556
给你一个整数 n,请你每隔三位添加点(即 “.” 符号)作为千位分隔符,并将结果以字符串格式返回。示例 1:输入:n = 987输出:“987”示例 2:输入:n = 1234输出:“1.234”示例 3:输入:n = 123456789输出:“123.456.789”示例 4:输入:n = 0输出:“0”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/thousand-separator著作权归领扣网络所有。商业转载请联系原创 2021-01-26 11:47:42 · 167 阅读 · 0 评论 -
算法练习LeetCode242
242. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-anagram著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解决:public原创 2021-01-26 09:20:27 · 102 阅读 · 0 评论