随笔分类 - 力扣学习计划
摘要:题目: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 思路: 首先就是遍历: class Solution { public int missingNumber(int[] nu
阅读全文
摘要:题目: 统计一个数字在排序数组中出现的次数。 首先想到最普通的做法,遍历数组同时计数 代码如下: class Solution { public int search(int[] nums, int target) { int count = 0; for (int index = 0; index
阅读全文
摘要:题目: 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 首先用的list.countains方法,结果超时了,说明数据量比较大的情况下List的countain
阅读全文
摘要:题目: 请实现一个函数,把字符串 s 中的每个空格替换成"%20" 思路: 首先排除s.replace(" ", "%20"),纯纯耍流氓。 就是考虑replace函数的底层实现,由于replace是支持正则表达式的(估计很多人不知道,我也是偶然得知),实际底层实现复杂的多,这里我只需要实现替换空格
阅读全文
摘要:题目: 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 例如 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
阅读全文
摘要:题目: 给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 思路: 想到hashmap自带的containKey的方法,遍历数组,如果存在containKey为是则跳出循环,为否则put进map中。 代
阅读全文
摘要:题目: 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数 思路: 首先想到了一个递归方法,从头开始执行,每次传入当前需要处理的数组下标,结束递归的目标下标,以及正在等待换位的数值val 递归体内先求出等待换位的数值的新坐标,将待换位数值放入新坐标,同时记录新坐标和对应之前的值作为
阅读全文
摘要:题目: 给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票) 思路: 分析题目可以知道,每天只能交易获得
阅读全文
摘要:题目: 一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。 思路: 首先还是最基础的解答思路,数组已经排序,则重复值都会连在一起,故按顺序遍历数组,如
阅读全文
摘要:最开始图省事,搞了一个list,在min函数被调用时将栈内现有数据全部排序后返回最小值 由于性能太差,考虑一个新的思路 设计思路:由两个栈组成,A栈作为元素栈,B栈作为最小元素栈push元素进栈时,和B栈栈顶元素比较,如果更小或相等则压入,否则不处理pop元素出栈时,和B栈栈顶元素比较,如果相等则B
阅读全文
摘要:刚开始没理解题目,仔细看题发现要求用两个栈实现队列,思路如下: 队列的特点为“先进先出”,需要通过“”后进先出“”的栈来实现,只需要将两个栈分别用作入队栈和出队栈即可。 即栈A只负责元素入队,当队列顶部元素需要出队时,如果栈B不为空,则直接弹出栈顶元素作为出队元素,如果栈B为空,则先向栈B内压入栈A
阅读全文