![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
小纸人人
小纸人的算法学习之路,不定期的分享一些有趣的算法题目!
展开
-
leetcode 48 旋转图像
给定一个 n×n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3...原创 2019-12-20 18:54:49 · 159 阅读 · 0 评论 -
leetcode 6 Z字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数...原创 2019-12-04 21:16:55 · 89 阅读 · 0 评论 -
leetcode 7 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。//我觉得最...原创 2019-11-18 20:28:31 · 86 阅读 · 0 评论 -
leetcode 150逆波兰表达式求值
根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例2:...原创 2019-08-31 00:46:00 · 97 阅读 · 0 评论 -
leetcode 122 买卖股票的最佳时机II(无限次交易)
定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易...原创 2019-08-30 23:56:50 · 199 阅读 · 0 评论 -
leetcode 93 复原IP地址
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]思路:本题用递归实现,一个ip地址只有3个点,根据点的个数判断合法不合法(也即字符串长度只能比点的个数多,且小于3*(k+1),k为点的个数)。如果最后不需要添加点,则字段值小于256...原创 2019-08-30 23:56:31 · 122 阅读 · 0 评论 -
leetcode 151. 翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good example"输出:"...原创 2019-08-21 21:09:45 · 89 阅读 · 0 评论 -
leetcode 224 基本计算器(只有加减和括号)
实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号(,右括号),加号+,减号-,非负整数和空格。示例 1:输入: "1 + 1"输出: 2示例 2:输入: " 2-1 + 2 "输出: 3示例 3:输入: "(1+(4+5+2)-3)+(6+8)"输出: 23class Solution { public i...原创 2019-08-31 01:06:46 · 427 阅读 · 0 评论 -
leetcode 227 基本计算器II(只有加减乘除无括号)
实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格。 整数除法仅保留整数部分。示例1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5一般需要符号栈、数据栈,两个。但是,看到网上一个写的不错的算法,只用了一个数据...原创 2019-08-31 01:16:18 · 660 阅读 · 0 评论 -
leetcode 772 基本计算器III(包含+-*/ 以及括号)
现基本计算器以计算简单表达式字符串。表达式字符串可以包含左括号(和右括号)、加号+或减号、非负整数和空格。表达式字符串只包含非负整数、+、-、*、/运算符、左括号和空格。整数除法应该截断为零。您可以假定给定的表达式总是有效的。所有中间结果将在范围内[-2147483648,2147483647]"1 + 1" = 2" 6-4 / 2 " = 4"2*(5+5*2)/3+(6/...原创 2019-08-31 01:36:36 · 4538 阅读 · 0 评论 -
leetcode 25 k个一组翻转链表
给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode prev = null;...原创 2019-08-31 01:54:33 · 122 阅读 · 0 评论 -
leetcode 123 买卖股票的最佳时机III(2笔交易)
class Solution { public int maxProfit(int[] prices) { if (prices.length <= 0) { return 0; } //进行初始化,第一天 s1 将股票买入,其他状态全部初始化为最小值 int s1 = -pric...原创 2019-08-31 02:43:19 · 88 阅读 · 0 评论 -
leetcode 121 买卖股票的最佳时机(1笔交易)
class Solution { public int maxProfit(int[] prices) { if (prices.length == 0) { return 0; } int res = 0; for (int i = 0, min = prices[0]; i < prices...原创 2019-08-31 02:45:25 · 95 阅读 · 0 评论 -
leetcode 56 区间合并
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。c...原创 2019-08-30 22:56:30 · 141 阅读 · 0 评论 -
leetcode 179 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。//这个题其实和最小字典序一样public class Solution { public String largestNumber(i...原创 2019-09-26 18:21:40 · 111 阅读 · 0 评论 -
leetcode 49 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。class Solut...原创 2019-08-19 17:19:22 · 61 阅读 · 0 评论 -
leetcode 38 报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11 被读作"two 1s"("两个一"), 即21。21 被读作"one 2", "one 1"("一个二","一个一...原创 2019-08-19 16:51:25 · 60 阅读 · 0 评论 -
LeetCode 2 链表两数相加
import java.util.Arrays;import java.util.Scanner;/** * 描述: * 给出两个 非空 的链表用来表示两个非负的整数。 * 其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 * 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 * 您可以假设除了数字 0 之外,这两个数都不...原创 2019-03-03 23:02:13 · 125 阅读 · 0 评论 -
leetcode3 最长无重复子串
package leetcode3;import java.util.*;/** * 那个网站的编译期有点小问题 拿着我的代码可以去自己的编译期运行 * 描述: *给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 * 输入: "abcabcbb" 输出: 3 abc * 输入: "bbbbb" 输出: 1 b * 输入: "pwwkew" 输出: 3 ...原创 2019-03-04 23:33:13 · 104 阅读 · 0 评论 -
leetcode4 两个有序数组求中位数
package leetcode4;import java.util.ArrayList;import java.util.HashSet;import java.util.TreeSet;/** * 描述: *给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 * 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 *...原创 2019-03-06 00:47:55 · 233 阅读 · 0 评论 -
leetcode5 最长回文子串
/* * leetcode5 最长回文子串 */public class Main { /**********************方法1****************************/ public static String longestPalindrome(String s) { if (s.length() <= 1 || s == null) { ...原创 2019-04-21 00:04:20 · 75 阅读 · 0 评论 -
leetcode11盛最多水的容器
public class Main { public static int maxArea(int[] height) { int res = 0; int l = 0; int r = height.length - 1; while (l < r) { // 从左向右 依次比较 找出最大的 res = Math.max(res, Math.min(heigh...原创 2019-04-25 21:48:22 · 88 阅读 · 0 评论 -
leetcode12数字转换成罗马数字
public class Main{ public static String intToRoman(int num) { StringBuilder res = new StringBuilder(); int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; ...原创 2019-04-25 22:03:05 · 126 阅读 · 0 评论 -
leetcode15三数之和
import java.util.Arrays;import java.util.LinkedList;import java.util.List;public class Main { public static List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); ...原创 2019-04-25 22:41:00 · 107 阅读 · 0 评论 -
leetcode8字符串转换整数。
public class Main { public static int myAtoi(String str) { String strs = str.trim(); if (strs == null || "".equals(strs)) { return 0; } char Initials = strs.charAt(0); long res = 0; in...原创 2019-04-22 16:46:41 · 84 阅读 · 0 评论 -
leetcode22括号生成
先上代码:import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main { public static List<String> generateParenthesis(int n) { List<String> res...原创 2019-05-14 08:58:02 · 187 阅读 · 0 评论 -
leetcode31.下一个排列
public class Solution { public void nextPermutation(int[] nums) { int i = nums.length - 2; while (i >= 0 && nums[i + 1] <= nums[i]) { i--; } ...原创 2019-05-14 19:58:28 · 79 阅读 · 0 评论 -
LeetCode16,最接近的三数之和(3Sum Colsest)
import java.util.Arrays;/** * 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数, * 使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 * * 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. * 与 target 最接近的三个数的...原创 2019-05-10 09:13:44 · 79 阅读 · 0 评论 -
leetcode 33 搜索旋转排序数组
class Solution {public int search(int[] nums,int target){ if (nums==null ||nums.length == 0){ return -1; } return split(nums,0,nums.length-1,target); } ...原创 2019-05-15 08:16:00 · 69 阅读 · 0 评论 -
leetcode39,组合总和
class Solution { public static List<List<Integer>> combinationSum(int[] candidates, int target) { Arrays.sort(candidates); List<List<Integer>> results = new Array...原创 2019-05-20 19:51:55 · 157 阅读 · 0 评论 -
leetcode40,组合总和2(不允许重复)
class Solution { public static List<List<Integer>> combinationSum2(int[] candidates, int target) { List<List<Integer>> results = new ArrayList<>(); Ar...原创 2019-05-21 09:48:26 · 275 阅读 · 0 评论 -
leetcode34在排序数组中查找元素的第一个和最后一个位置
class Solution { public int[] searchRange(int[] nums, int target) { if (nums == null || nums.length == 0){ return new int[] {-1, -1}; } int preIndex = getPreInd...原创 2019-05-16 09:16:36 · 79 阅读 · 0 评论 -
leetcode36,有效的数独
import java.util.HashSet;public class Solution { public static boolean isValidSudoku(char[][] board) { for (int i = 0; i < board.length; i++) { HashSet<Character> rows = ne...原创 2019-05-17 10:27:43 · 418 阅读 · 0 评论 -
LeetCode 1 两数之和
package L1_two_sum;import java.util.Arrays;import java.util.HashMap;/** * 描述: * 给定一个整数数组 nums 和一个目标值 target, * 请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 * 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 *...原创 2019-03-03 18:21:09 · 156 阅读 · 0 评论