
LeeCode
LuckyGuyy
天道酬勤
展开
-
剑指 Offer 29. 顺时针打印矩阵(答案源自官网)
方法一:模拟可以模拟打印矩阵的路径。初始位置是矩阵的左上角,初始方向是向右,当路径超出界限或者进入之前访问过的位置时,则顺时针旋转,进入下一个方向。判断路径是否进入之前访问过的位置需要使用一个与输入矩阵大小相同的辅助矩阵 visited,其中的每个元素表示该位置是否被访问过。当一个元素被访问时,将visited 中的对应位置的元素设为已访问。如何判断路径是否结束?由于矩阵中的每个元素都被访问一次,因此路径的长度即为矩阵中的元素数量,当路径的长度达到矩阵中的元素数量时即为完整路径,将该路径返回。cl.原创 2020-10-27 17:13:37 · 253 阅读 · 0 评论 -
977. 有序数组的平方(答案源自官网)
方法一:直接排序时间复杂度:O(nlogn),其中 nn 是数组 A 的长度。空间复杂度:O(logn)。除了存储答案的数组以外,我们需要O(logn) 的栈空间进行排序。class Solution { public int[] sortedSquares(int[] A) { int[] ans = new int[A.length]; for (int i = 0; i < A.length; ++i) { an...原创 2020-10-16 15:08:34 · 221 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
时间复杂度 O(N)O(N) : NN 为链表长度;总体看, former 走了 NN 步, latter 走了 (N-k)(N−k) 步。空间复杂度 O(1)O(1) : 双指针 former , latter 使用常数大小的额外空间。引用自:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/solution/mian-shi-ti-22-lian-biao-zhong-dao-shu-di-..原创 2020-10-16 11:05:34 · 115 阅读 · 0 评论 -
1002. 查找常用字符
方法一:计数时间复杂度:O(n(m+∣Σ∣)),其中 n 是数组 A 的长度(即字符串的数目),m 是字符串的平均长度,Σ 为字符集,在本题中字符集为所有小写字母,∣Σ∣=26。遍历所有字符串并计算 \textit{freq}freq 的时间复杂度为 O(nm)O(nm);使用freq 更新minfreq 的时间复杂度为O(n∣Σ∣);由于最终答案包含的字符个数不会超过最短的字符串长度,因此构造最终答案的时间复杂度为 O(m+∣Σ∣)。这一项在渐进意义上小于前二者,可以忽略。空间复杂度:..原创 2020-10-14 16:04:45 · 170 阅读 · 0 评论 -
121. 买卖股票的最佳时机
方法一:暴力法时间复杂度:O(n2)。循环运行 n (n-1)/2次。空间复杂度:O(1)。只使用了常数个变量。public class Solution { public int maxProfit(int prices[]) { int maxprofit = 0; for (int i = 0; i < prices.length - 1; i++) { for (int j = i + 1; j < prices..原创 2020-10-14 14:19:35 · 128 阅读 · 0 评论 -
1. 两数之和
力扣官方题解方法一:暴力枚举时间复杂度:O(N2),其中 N 是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次。空间复杂度:O(1)。class Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; for (int i = 0; i < n; ++i) { for (int j = i + 1; j ..原创 2020-10-13 15:04:29 · 295 阅读 · 0 评论 -
20. 有效的括号
方法一:栈时间复杂度:O(n,其中 n是字符串 s 的长度。空间复杂度:O(n+∣Σ∣),其中 Σ 表示字符集,本题中字符串只包含 6种括号,∣Σ∣=6。栈中的字符数量为 O(n),而哈希映射使用的空间为 O(∣Σ∣),相加即可得到总空间复杂度。class Solution { public boolean isValid(String s) { int n = s.length(); if (n % 2 == 1) { return ..原创 2020-10-13 16:37:44 · 190 阅读 · 0 评论