- 博客(26)
- 收藏
- 关注
原创 LeetCode每日十题---双指针
题目描述1笔者分析1.1开始觉得这道题每三个数都是必须要相加比较的,也确实是。但是可以将同一个值的数数量累加,这样也能快捷许多,而且用两层for循环就能实现,值得注意的是用排列组合求数量是有多种情况要分类讨论。不过,秀还是秀的,时间效率超过百分之百。class Solution { public int threeSumMulti(int[] A, int target) { int kMaxN=100; int mod=(int)Math.pow(10,9)+7;
2020-09-29 10:31:25 623
原创 LeetCode每日十题---链表(三)
题目描述1笔者解答1.1public class Solution { public ListNode detectCycle(ListNode head) { Map<ListNode,Integer> map=new HashMap<>(); while(head!=null){ if(!map.containsKey(head)){ map.put(head,1); }el
2020-09-28 14:22:15 642
原创 LeetCode每日十题---链表(二)
题目描述1笔者解答1.1class Solution { public ListNode removeElements(ListNode head, int val) { while(head!=null&&head.val==val){ head=head.next; } if(head==null)return head; ListNode head_copy=head; while(
2020-09-27 10:55:30 570
原创 LeetCode每日十题---链表
题目描述1笔者分析1.1我的常规想法是新建两个逆序链表,从后往前比较,但我发现我理解错题目意思了。这个题并不是问两个链表值相等的后缀,它是真的相交与同一链表,所以原来想法不仅复杂了,而且也解决不了问题。看到评论区的大佬解法,链表用的这么秀也是太大佬了。平时我们遍历链表都喜欢用while(node.next),而且一遍遍历解决问题,但如果一遍遍历解决不了问题的话就开始慌了。这题的解法巧妙之处在于while(pA!=pB)这样可以遍历两次链表,而且确实需要两次遍历链表,通过交叉遍历来达到同步的目的是真的六
2020-09-25 15:10:39 603
原创 LeetCode每日十题---哈希表(四)
题目描述1笔者解答1.1class Solution { public List<List<String>> groupAnagrams(String[] strs) { List<List<String>> IList=new ArrayList<List<String>>(); Map<Map,Integer> IMap=new HashMap<Map,Integer>();
2020-09-23 14:53:07 610
原创 LeetCode每日十题---哈希表(三)
题目描述1笔者解答1.1class Solution { public int findMaxLength(int[] nums) { int res=0,sum=0; for(int i=0;i<nums.length;i++){ if(nums[i]==0){ nums[i]=-1; } } Map<Integer,Integer> map=n
2020-09-22 16:08:19 594
原创 LeetCode每日十题---哈希表(二)
题目描述1笔者解答1.1class Solution { public int[][] updateMatrix(int[][] matrix) { int m=matrix.length; int n=matrix[0].length; int[][] result=new int[m][n]; int i,j; int min=0; int sum=m*n; for(i=0;i<m;i+
2020-09-21 20:46:53 547
原创 与技术无关的一篇文章 ,聊聊开学的这一个月
渐渐的,我发现自己已经喜欢上这个安静的角落了,一个能保留青春痕迹的角落。 写这篇文章的时候是晚上七点半,时间并不特殊,只是在未来的两个月内可能都不用参加什么比赛了,最近的应该是十二月份的CSP认证和英语六级考试了吧。这个月我挺满足的,八月中旬回的学校,紧接着是长达十天的期末考试。像我这种平时不学习的人,这十天可真难熬,好在潦草收场。九月初给自
2020-09-20 20:27:03 686
原创 LeetCode每日十题---哈希表
题目描述1笔者解答1.1public int countPrimes(int n){ if(n<3) return 0; int count=0; for(int i=2;i<n;i++){ int flag=0; for(int j=2;j<=i/2;j++) { if(i%j==0) { flag=1; break; } } if(flag==0)
2020-09-20 19:22:26 587
原创 LeetCode每日十题---数组(五)
题目描述1笔者解答1.1class Solution { public String addStrings(String num1, String num2) { int length1=num1.length(); int length2=num2.length(); int i,j; int last=0; String result=""; for(i=1;i<=length1;i++){ int a=num1.char
2020-09-17 19:28:47 525
原创 LeetCode每日十题---数组(四)
题目描述1笔者解答1.1class Solution { public boolean canReorderDoubled(int[] A) { List<Integer> IList=new LinkedList<Integer>(); int i; int length=A.length; for(i=0;i<length;i++){ IList.add(A[i]); }
2020-09-16 16:27:32 594
原创 LeetCode每日十题---数组(三)
题目描述1笔者解答1.1class Solution { public boolean canPlaceFlowers(int[] flowerbed, int n) { int length=flowerbed.length; boolean get_1=false; for(int i=0;i<length;i++){ if(!get_1&&flowerbed[i]==0){ if(i
2020-09-15 21:23:25 567
原创 2020年数学建模国赛B题“穿越沙漠”思路
前言本人小白,求大佬们放过!本篇文章介绍我们小组编写B题的思路,如有不足欢迎批评指正!原题考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在沙漠中行走。途中会遇到不同的天气,也可在矿山、村庄补充资金或资源,目标是在规定时间内到达终点,并保留尽可能多的资金。游戏的基本规则如下:(1)以天为基本时间单位,游戏的开始时间为第0天,玩家位于起点。玩家必须在截止日期或之前到达终点,到达终点后该玩家的游戏结束。(2)穿越沙漠需水和食物两种资源,它
2020-09-14 20:05:53 29134 3
原创 LeetCode每日十题---数组(二)
题目描述1笔者解答1.1class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list=new ArrayList<>(); circle(root,list); return list; } public static void circle(TreeNode root,List<
2020-09-14 17:46:07 565
原创 leetCode每日十题---数组
题目描述1笔者解答1.1class Solution { public int maxProfit(int[] prices) { if(prices.length<=1)return 0; int[] max=new int[1]; Mergesort(0,prices.length-1,prices,max); return max[0]>0?max[0]:0; } public static void Merge
2020-09-09 16:51:53 628
原创 leetCode每日十题---排序(四)
题目描述1笔者解答1.1class Solution { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> IList=new ArrayList<List<Integer>>(); if(k>n)return IList; int[] match=new int[n+1];
2020-09-08 18:00:51 571
原创 leetCode每日十题---排序(三)
题目描述1笔者解答1.1class Solution { public String findLongestWord(String s, List<String> d) { PriorityQueue<String> queue=new PriorityQueue<>((o1,o2)->{ if(o1.length()==o2.length()){ return o1.compareTo(o2);
2020-09-07 20:50:49 523
原创 leetCode每日十题---排序(二)
题目描述1笔者解答1.1class Solution { public int[] findDiagonalOrder(List<List<Integer>> nums) { //m行n列 int m=nums.size(); int sum=0; int i; for(i=0;i<m;i++){ int temp=nums.get(i).size(); sum+=temp; }
2020-09-06 18:42:09 548
原创 刷leetCode需要掌握的一些数据结构---JAVA篇
基本数据结构一览1.Collection接口Collection是最基本的集合接口,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。这个接口有两个基本方法:public interface Collection<E>{ boolean add(E element); Iterator<E> iterator(); ...}如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个it
2020-09-06 10:17:41 1199
原创 leetCode每日十题---排序
题目描述1笔者解答1.1class Solution { public int[] relativeSortArray(int[] arr1, int[] arr2) { Map<Integer,Integer> map=new HashMap<Integer,Integer>(); HashSet<Integer> set=new HashSet<Integer>(); int[] match=new int
2020-09-05 21:23:20 572 1
原创 数学建模常用模型---观摩大佬们博客后的总结
1.灰色预测法使用范围数据样本点个数少,6-15个数据呈现指数或曲线的形式只适合做中短期预测,不适合长期预测基于灰色建模理论的灰色预测法,本节只对其中的数列预测法进行介绍。数列预测就是对某一指标的发展变化情况所作的预测,其预测的结果是指该指标在未来各个时刻的具体数值。数列预测的大致步骤如下。1.累加生成数列的GM(1,1)模型2.通过最小二乘法拟合求解未知系数3.求解初始微分方程所对应的时间响应函数,得到数列预测的基础公式,对一次累加生成数列的预测值,可以求得原始数的还原值4.计算原
2020-09-05 17:08:49 2252
原创 leetCode每日十题---堆(难度:困难)
题目描述1笔者分析1.1直到现在我还是会对这种类似于多决策问题产生畏惧,我总是会认为它很复杂,因为它有多种多样的走法,和判定条件。但每次看到题解,就又会惊叹于如此少量的代码就可以实现。因为单从代码来看,你是看不出来它是在写这题的,一个很大众很简洁的处理方式。不过看到这种类似多决策问题的题,递归就完事了。class Solution { public int swimInWater(int[][] grid) { int N=grid.length; int
2020-09-04 21:00:17 627
原创 leetCode每日十题---堆(难度:中等)二
题目描述1笔者解答1.1class Solution { public int getKthMagicNumber(int k) { HashSet<Integer> set=new HashSet<>(); int[] params=new int[]{3,5,7}; PriorityQueue<Integer> queue=new PriorityQueue<>(); queue.offer(1
2020-09-03 20:08:34 681
原创 leetCode每日十题---堆(难度:中等)
题目描述1笔者解答1.1class Solution { public int nthUglyNumber(int n) { int count=1; int num_result=1; while(count<n){ num_result++; int num=num_result; boolean getone=false; do {
2020-09-02 16:08:29 835
原创 leetCode每日十题---栈(难度:困难)
题目描述1笔者解答1.1class Solution { public boolean PredictTheWinner(int[] nums) { return total(nums,0,nums.length-1,1)>=0; } public int total(int[] nums,int start,int end,int turn){ if(start==end) return nums[start]*turn;
2020-09-01 19:08:10 687
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人