![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法打卡
你的背影_
不患无位,患所以立;不患莫知己,求为可知也。
展开
-
算法打卡——leetcode剑指 Offer 22. 链表中倒数第k个节点
链表中倒数第k个节点 方法一 // 第一种方法,遍历两次 比如说要倒数第3个节点 // 第一遍遍历,确定总个数,第二遍遍历 遍历到总节点个数 - 3 停止 并返回当前节点 // 这里要注意的就是边界问题, // 如 一共10个节点 倒数第三个 其实是第8个节点, // 一共是n个节点,返回的应该是第n-2个节点 // 从新开始遍历 就要从 head开始遍历 执行7次 head.next 即执行n-3次 head.next // 时间复杂度O(n) 空间复杂度O(1) fun getKt原创 2021-03-15 16:29:05 · 217 阅读 · 0 评论 -
算法打卡——leetcode剑指 Offer 18. 删除链表的节点
删除链表的节点 时间复杂度:最好O(1) , 最坏O(n) 空间复杂度:O(1) 然后看了评论区里的标准答案,感觉,差不多原创 2021-03-15 14:27:23 · 216 阅读 · 0 评论 -
算法打卡——leetcode20. 有效的括号
有效的括号 这个题一上来就觉得使用 先进后出的栈 做题比较好 然后写出了如下代码 大致思路是对的 因为遍历了一遍字符串 时间复杂度是O(n) 空间复杂度开辟了栈 也是 O(n) 后来看了解题方法其实我的思路是正确的 优化了一下代码结构,用了更少的代码解决问题 查看了stack类和lindedlist类的区别 首先这两个都是abstractlist的子孙类 stack就是单纯的栈,push入栈 pop出栈 empty 判空 peek查看栈顶元素(不弹出) linkedlist典型的双向链表结原创 2021-03-12 14:47:48 · 228 阅读 · 0 评论 -
算法打卡——leetcode剑指 Offer 24. 反转链表 & 206. 反转链表
链表反转 将近一个下午的时间都在研究这道题 自己想了3种方法,后来看解题发现这么简单= = 还是得多多学习 方法一: 遍历将节点放入栈中然后 循环将栈中节点吐出 时间复杂度O(n) 空间复杂度O(n) 方法二: 每一次获取到最后的节点,放到newhead后面 时间复杂度O(n) 空间复杂度O(1) 方法三: 新建newhead然后第一次直接放到后面,然后都用插入法进行节点插入 时间复杂度O(n) 空间复杂度O(1) 方法四: 双指针法,这个应该是最简单的最规范的写法原创 2021-03-11 17:37:35 · 158 阅读 · 0 评论 -
算法打卡——leetcode114. 二叉树展开为链表
前序遍历练习 前序递归 看解题的时候发现不对,array里直接房treenode就可以了。改了一下 前序迭代 自己想的暴力拼接 都是遍历了所有的节点,所以时间复杂度都为O(n)原创 2021-03-10 17:21:20 · 122 阅读 · 0 评论 -
算法打卡——leetcode94. 二叉树的中序遍历
递归 fun inorderTraversal1(root: TreeNode?): List<Int> { val l = ArrayList<Int>() inorder(root, l) return l } fun inorder(root: TreeNode?, l: ArrayList<Int>) { if (root == null) return inorder(root.left, l) l.add(r原创 2021-03-10 14:54:00 · 84 阅读 · 0 评论 -
算法打卡——leetcode11. 盛最多水的容器
11. 盛最多水的容器 一看到题目 穷举法 不出所料,直接超时时间复杂度为O(n*n-1) = O(n^2) 看到评论区里的方法大呼精辟 模仿着写出来了 我信了你的邪,看了下最快的,大家都是O(n)你最快,我最慢? 继续优化,如果移动后比移动前的数值要小,其实没必要计算了,遂更改为一下代码 自认为是能做到O(n)中,最快的了。 以上 ...原创 2021-03-09 17:14:06 · 115 阅读 · 0 评论 -
算法打卡——leetcode1528. 重新排列字符串
https://leetcode-cn.com/problems/shuffle-string/ 看完题目, 想起来学习的随机访问是数组最快为O(1),空间复杂度是O(n) 所以这个题使用charArray随机访问放置每个char后转换成string即可原创 2021-03-09 14:04:40 · 109 阅读 · 0 评论 -
算法打卡——面试题 01.03. URL化
https://leetcode-cn.com/problems/string-to-url-lcci/ 拿到题,弄不清楚真实长度是什么意思,后来看了解题才明白,就是后面的字符串没用的意思。 不太明白这个题是在考察什么。 于是写下了下面的代码 后来觉得这也太差了,看了大家的解体思路改成了下面的代码 然后就思考这个题到底是想考察什么。 那不能白做吧,那只能强行加戏了,来看看第一个为啥这么慢吧。 String.substring(startIndex: Int, endIndex: Int): String原创 2021-03-09 11:26:55 · 130 阅读 · 0 评论