算法
想想S1mple 会怎么做
这个作者很懒,什么都没留下…
展开
-
【算法】LeetCode846. 一手顺子(Java)
首先对题目进行一个整体判断,hand.length对groupSize取余,不等于0时返回false,当groupSize等于1时直接返回true。对hand进行排序,存入hashmap,遍历hand,通过hashmap看数字是否连续出现。每次使用数字后对haspmap中的值减1public class LC0846 { public boolean isNStraightHand(int[] hand, int groupSize) { if(hand.length%gr...原创 2021-12-30 22:32:17 · 284 阅读 · 0 评论 -
【算法】LeetCode62. 不同路径(java)
写了一个递归,明显时间复杂度太高class Solution { int count=0; public int uniquePaths(int m, int n) { go(m,n,0,0); return count; } public void go(int m,int n,int x,int y){ if(x==n-1&&y==m-1){ count++; ...原创 2021-12-15 18:27:43 · 691 阅读 · 0 评论 -
【算法】LeetCode46. 全排列(Java)
典型递归全排列,这里我定义了一个flag数组表示nums中当前数字有没有被使用过public class LC0047 { public List<List<Integer>> permuteUnique(int[] nums) { List<List<Integer>> lists=new ArrayList<>(); boolean[] flag=new boolean[nums.leng...原创 2021-12-12 23:49:33 · 333 阅读 · 0 评论 -
【算法】23. 合并K个升序链表Java(非常好的递归和分治算法题)
每次将链表数组分为两半,并调用排序函数例如数组中有五个链表:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next)...原创 2021-12-09 21:06:59 · 644 阅读 · 0 评论 -
【算法】Leetcode17. 电话号码的字母组合Java
用递归进行全排列public class LC0017 { static String arrs[]=new String[]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; List<String> lists=new ArrayList<>(); public List<String> letterCombinations(String digits) { ...原创 2021-12-07 20:32:02 · 290 阅读 · 0 评论 -
【算法】Leetcode1816. 截断句子Java
public class LC1816 { public String truncateSentence(String s, int k) { String arr[]=s.split(" "); StringBuilder str=new StringBuilder(); for(int i=0;i<k-1;i++){ str.append(arr[i]); str.append(" "); } str.ap...原创 2021-12-06 10:42:16 · 218 阅读 · 0 评论 -
【算法】LeetCode372. 超级次方(每日一题)Java
利用分治法将很大的数拆分成多份,分别区余数。例如:2^433852可以分成2^(43385*10+2) ==> (2^43385)^10 ==> (2^43385)^10*2^2public class LC0372 { int mol=1337; public int superPow(int a, int[] b) { return dfs(a,b,b.length-1); } int dfs(int a,int[]...原创 2021-12-05 13:35:55 · 204 阅读 · 0 评论 -
【算法】LeetCode383. 赎金信(每日一题)Java
典型的字符串计数问题:1)当需要被拼接的字符串长度大于另一个字符串长度直接返回false2)用int[26]对字符串进行遍历计数class Solution{ public boolean canConstruct(String ransomNote, String magazine) { if(ransomNote.length()>magazine.length())return false; int s[]=new int[26]...原创 2021-12-04 14:32:18 · 440 阅读 · 0 评论 -
LeetCode1005. K 次取反后最大化的数组和(每日一题)
首先想到的是给数组排序,遍历数组通过IF判断将小于0的数变为大于0的数,再进行一些细节判断。通过三次的提交修改了一些BUG后的结果:循环遍历数组,当K还不为0的时候判断: 若下标越界:下标已经越界了但K还不为0,此时一定是已经将数组遍历过一次,这时候的数都是正数,当K对二取余==0时可以直接退出,若不为0将数组重新排序,将最小的数变为负数结束循环 当下标不越界:进入正常的判断,当数组遍历到的数大于0时操作与下标越界相同public class ...原创 2021-12-03 20:42:05 · 1137 阅读 · 0 评论 -
【算法】Leetcode438. 找到字符串中所有字母异位词(每日一题)
438. 找到字符串中所有字母异位词难度中等702收藏分享切换为英文接收动态反馈给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。示例1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc...原创 2021-11-28 21:12:28 · 469 阅读 · 1 评论 -
【算法】LC0061旋转链表,基本数据结构链表经典算法
LC0061旋转链表,基本数据结构链表经典算法原创 2021-11-27 22:03:10 · 345 阅读 · 0 评论 -
【算法】L2-008 最长对称子串 (25 分)Java,字符串典型例题
L2-008 最长对称子串 (25 分)对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:Is PAT&TAP symmetric?结尾无空行输出样例:11结尾无空行这是一个典型的动态规划题解法原创 2021-11-27 20:19:46 · 1136 阅读 · 6 评论