![](https://img-blog.csdnimg.cn/20200409150614578.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
刷题日记
刷题日记
Mango学习日记
TA很懒,不爱学习
展开
-
Leetcode刷题日记-136. 只出现一次的数字
异或的思想:1^1=0;1^0=1java没有同或,可以(a^b)^1class Solution { public int singleNumber(int[] nums) { for (int i=1 ;i<nums.length;i++){ nums[i]=nums[i-1]^nums[i]; } return nums[nums.length-1]; }}...原创 2020-09-04 12:25:34 · 158 阅读 · 0 评论 -
Leetcode刷题日记-121. 买卖股票的最佳时机
1,暴力法2.动态规划与"53.最大子序列的和"相似设dp[i]为,当price[i]为卖出天价格时,最大收益那么:dp[i]=Math.max(dp[i-1]-prices[i-1]+prices[i],0);class Solution { public int maxProfit(int[] prices) { if(prices.length<=1) return 0; else { int[] dp = new i.原创 2020-09-04 11:28:54 · 174 阅读 · 0 评论 -
Leetcode刷题日记-70. 爬楼梯
斐波那契数列递归思想,寻找f(n)和f(n-1)的关系假设,前n-1个台阶已经算出方法数为f(n-1),现在要多加一层台阶,那么就会出现以下两种情况:前n-1个台阶的走法不变,最后走1阶,那么n阶的走法为f(n-1);前n-2个台阶的走法不变,最后走2阶,那么n阶的走法为f(n-2);综上n阶台阶的走法可以是f(n-1)也可以是f(n-2),那么总的走法就为:f(n)=f(n-1)+f(n-2)class Solution(object): def climbStairs(self.原创 2020-09-04 11:01:56 · 133 阅读 · 0 评论 -
Leetcode刷题日记-53. 最大子序和
动态规划[-2,1,-3,4,-1,2,1,-5,4]指针i从头开始向右扫,dp[i]表示包含指针位置上的数的连续子数组的最大解最大解dp[n]和dp[n-1]的关系:max(nums[n],nums[n]+dp[n-1])那么对应的结果:nums [-2,1,-3,4,-1,2,1,-5,4]dp=[-2,1,-2,4,3,5,6,1,5];由此可见 6为结果class Solution { public int maxSubArray(int[] nums) { .原创 2020-09-04 10:14:48 · 138 阅读 · 0 评论 -
Leetcode刷题日记-21. 合并两个有序链表
递归思想使用递归,要了解 mergeTwoLists( l1, l2) 的意义mergeTwoLists( l1, l2) 代表将 l1 和 l2 排序,返回排序好的链表(头结点)所以递归的过程:先判断 l1和l2 的大小,如果l1小,将l1先拿出来,把l1之后的节点和l2排序,mergeTwoLists( l1.next, l2) ,排除好了以后,将排序好的链表挂在l1之后,l1.next=mergeTwoLists(l1.next,l2);反之亦然结束:当l1或者l2为空的时候,然后考.原创 2020-09-04 10:12:43 · 163 阅读 · 0 评论 -
Leetcode刷题日记-20. 有效的括号
法一堆栈的思想,主要考察堆栈的使用,注意字符串转字符数组可以使用toCharArray也可直接s.charAt(i)法二字符串修改的方法class Solution { public boolean isValid(String s) { char[] array = s.toCharArray(); Stack<Character> stack = new Stack<>(); Character temp =' ';.原创 2020-09-02 16:51:31 · 187 阅读 · 0 评论 -
Leetcode刷题日记-1. 两数之和
找到整数,但是要求返回其下标,所以可以使用map的键对值,一个放数一个放下标import java.util.Mapimport java.util.HashMapclass Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map = new HashMap<>(); int[] res = new int[2]; .原创 2020-09-02 10:42:18 · 136 阅读 · 0 评论 -
Leetcode刷题日记-136. 只出现一次的数字
思路1:使用set集合,将nums[]中的数据向set添加,添加前先判断set中是否存在该数,存在就消去,不存在就添加,最后set中就会只剩一个数,就是只出现一次的数字class Solution { public int singleNumber(int[] nums) { Set<Integer> set = new HashSet<>...原创 2020-04-04 22:20:13 · 74 阅读 · 0 评论 -
Leetcode刷题日记-70. 爬楼梯(动态规划)
递归思想,寻找f(n)和f(n-1)的关系假设,前n-1个台阶已经算出方法数为f(n-1),现在要多加一层台阶,那么就会出现以下两种情况:前n-1个台阶的走法不变,最后走1阶,那么n阶的走法为f(n-1);前n-2个台阶的走法不变,最后走2阶,那么n阶的走法为f(n-2);综上,n阶台阶的走法可以是f(n-1)也可以是f(n-2),那么总的走法就为:f(n)=f(n-1)+f(...原创 2020-04-04 21:35:42 · 108 阅读 · 0 评论 -
Leetcode刷题日记-198. 打家劫舍(动态规划)
根据递归思想,找f(n)和f(n-1)的关系f(n)有两种选择:最后选了nums[n-1],而没有选择nums[n],相当于,数组中就没有nums[n],就可以直接继承f(n-1)的结果 最后选了nums[n],和num[n-2],而跳过了nums[n-1],相当于,把nums[n-1]在数组中去掉,也就是,取f(n-2),再加上最后的nums[n]最后结果取最大值...原创 2020-04-04 21:13:30 · 155 阅读 · 0 评论 -
Leetcode刷题日记-448. 找到所有数组中消失的数字
* 解题思路:使用数组的下标来标记数字的出现于否,通过一遍遍历即可标记出全部已经出现的数组 * * [4,3,2,7,8,2,3,1] 初始数据 * 第一个数据 4 出现,将数组的第四个也就是下标 3 的数据修改为负数。-7 计算时,通过绝对值处理一下即可不影响数据的计算 * [4,3,2,-7,8,2,3,1] * [4,3,-2,...原创 2020-04-02 21:13:22 · 130 阅读 · 0 评论 -
Leetcode刷题日记-234. 回文链表
中心思想:快慢指针fast指针每次走两步,slow每次走一步,那么当fast走到最后的时候,slow刚好走到中间从中间开始反转后面的链表,然后比较//反转链表比较法class Solution { public static boolean isPalindrome(ListNode head) { if(head==null||head.next==n...原创 2020-04-01 12:40:44 · 106 阅读 · 0 评论 -
Leetcode刷题日记-206. 反转链表-(递归详解)
首先了解一下递归的正确打开方式:找出临界值找出最后一次和倒数第二次的关系找出临界值翻转后头变成了尾巴,所以最后的临界值head.next==null,同时考虑空链表,所以临界值为head==null||head.next==null,当head==null||head.next==null时候,只需要将head返回就行if(head==null||head.next==n...原创 2020-04-01 11:11:20 · 125 阅读 · 0 评论 -
Leetcode刷题日记-20.有效的括号
**中心思想使用stack栈,遇到({[入栈,遇到)]}弹出栈顶元素,看是否匹配使用map集合,键值对分别放入(),{},[],用来判断是否匹配原创 2020-04-01 10:35:53 · 205 阅读 · 0 评论 -
Leetcode刷题日记-141.环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。哈希表法平均周转时间就是用周转时间总时间除以作业个数:所有作业的周转时间/作业总数周转时间为作业完成时刻减去作业到达的时刻:作业完成时刻-作业到达时刻;由于是先来先服务;需一个一个完成进程,所以A的周转时...原创 2020-03-29 22:30:31 · 93 阅读 · 0 评论