算法练习
拥抱月光
这个作者很懒,什么都没留下…
展开
-
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 · 73 阅读 · 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 · 110 阅读 · 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 · 79 阅读 · 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 · 111 阅读 · 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 · 112 阅读 · 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 · 91 阅读 · 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 · 103 阅读 · 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 · 140 阅读 · 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 · 113 阅读 · 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 · 150 阅读 · 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 · 86 阅读 · 0 评论