剑指offer
wangfy_
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 15. 二进制中1的个数
https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/ 方法1:循环判断末位 func hammingWeight(num uint32) int { cnt := 0 for num != 0 { cnt += int(num & 1) // 如果num的末位是1则【num&1==1】,否则【num&1==0】 num >>= 1 // num右移一位,例如:11101原创 2020-12-27 18:58:26 · 64 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
转自:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/solution/javaer-fen-cha-zhao-fa-jian-zhi-offerer-qebj4/ 仅做个人备份,浏览请看原文 具体步骤: 定义首尾指针 head、tail 分别指向旋转数组后的第一个元素和最后一个元素,取中点mid进行比较: 如果numbers[mid] > numbers[tail] : 说明中间位置的..转载 2020-12-25 17:49:32 · 66 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/ dp优化: func fib(n int) int { if n == 0 { return 0 } if n == 1 { return 1 } per, cur := 0, 1 for i := 2; i <= n; i++ { tmp := (per + cur) % 1000原创 2020-12-25 17:25:31 · 75 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/ 1. AppendTail,直接进s1,无需判断 2. DeleteHead,从s2出,但判断如下: // 如果s2!=空,直接出s2 // 如果s2==空&&s1==空,返回-1 // 如果s2==空&&s1!=空,先将s1的全部元素进到s2,再从s2出 type CQueue struct {...原创 2020-12-25 17:16:07 · 93 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 1. 数组头插法 /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reversePrint(head *ListNode) []int { res := make原创 2020-12-25 15:59:44 · 73 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树
https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/ 即二叉树的BFS 使用队列 /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func levelOrder(root *Tre原创 2020-12-25 15:27:04 · 70 阅读 · 0 评论 -
LeetCode 121. 买卖股票的最佳时机
转自:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/121-mai-mai-gu-piao-de-zui-jia-shi-ji-by-leetcode-/ 仅做个人备份,浏览请看原文 一次遍历 因为不能在买入股票前卖出股票,所以可以使用一次遍历方法。 假设给定的数组为:[7, 1, 5, 3, 6, 4],如果我们在图表上绘制给定数组中的数字,我们将会得到:我们来假设自己来购买股票。随着时间的.转载 2020-12-25 14:45:01 · 85 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序
https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/ 转自:https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/solution/go-shuang-bai-by-ba-xiang-8/ 仅做个人备份,浏览请看原文 func reverseWords(s string) string { strList := strings.Split(s," ") .转载 2020-12-24 15:17:12 · 74 阅读 · 0 评论 -
剑指 Offer 57. 和为s的两个数字
https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/ 使用首尾指针 关键两步: if nums[l] + nums[r] > target { r-- continue } if nums[l] + nums[r] < target { l++ continue ...原创 2020-12-24 10:59:10 · 75 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/ 1. 遍历数组 func findRepeatNumber(nums []int) int { dupMap := make(map[int]bool, 0) for _, num := range nums { if _, ok := dupMap[num]; ok { return num原创 2020-12-24 10:45:18 · 86 阅读 · 1 评论 -
剑指 Offer 05. 替换空格
https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/submissions/ func replaceSpace(s string) string { res := make([]byte, 0) for i := 0; i < len(s); i++ { if s[i] == ' ' { res = append(res, "%20"...) } else {原创 2020-12-24 10:30:02 · 75 阅读 · 1 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 解题思路【 转自:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/solution/jian-zhi-offerer-shua-javacong-di-gui-da-rp2h/仅做个人备份 浏览请看原文 】 本质就是斐波那契数列问题 递归法 核心思想:怎么跳到第n阶台阶呢,由于一只..转载 2020-12-23 17:56:29 · 155 阅读 · 1 评论 -
剑指 Offer 50. 第一个只出现一次的字符
https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/ 简单方法:map+ 两次遍历 func firstUniqChar(s string) byte { dupMap := make(map[byte]bool, 0) for i := 0; i < len(s); i++ { if _, ok := dupMap[s[i]]; !ok {原创 2020-12-23 17:27:32 · 85 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ 首尾指针 func exchange(nums []int) []int { l, r := 0, len(nums)-1 for { if l >= r { return nums } if nums[l] %原创 2020-12-23 16:54:53 · 85 阅读 · 0 评论 -
剑指 Offer 28. 对称的二叉树
https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/ 递归的比较左右 /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func isSymmetric(root *TreeNode) bool { i原创 2020-12-21 18:38:30 · 79 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/ 注意:利用辅助栈保存小值(比当前最小值还要小的入栈值),这个栈叫「非严格降序栈」: 当x【len(this.min) >0 &&this.min[len(this.min)-1] <x】时不需要入min栈 type MinStack struct { stack []int min []int } func Constructo...原创 2020-12-21 18:00:42 · 84 阅读 · 0 评论 -
链表寻找倒数第N项
双指针,前后差距N 等前指针跑到最后,后指针就指向倒数第N项原创 2020-02-11 11:55:22 · 127 阅读 · 0 评论 -
剑指offer-删除链表中重复的结点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 public ListNode deleteDuplication(ListNode pHead){ } 解析 此题处理起来棘手的有两个地方: 如果某个结...原创 2019-02-11 16:14:51 · 185 阅读 · 0 评论 -
剑指offer-链表中环的入口结点
题目详述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路 使用快慢指针,快指针每次走两步,慢指针每次走一步,如果快慢指针相遇说明有环; 有环以后,需要寻找环入口节点,已经找到了一个环中的节点,利用这个节点,去往下遍历,由于是环,所以这个节点肯定会和自身相遇,相遇以后,记录相遇过程中走的步数,就是环的长度。 知道环的长度以后,然后再利用快慢指针的思想,快指针先...原创 2019-02-10 23:47:01 · 123 阅读 · 0 评论 -
剑指offer-左旋转字符串
题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。 思路 字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。 剑指offer思路,先反...原创 2019-01-15 22:03:29 · 82 阅读 · 0 评论