算法
文章平均质量分 55
Chasel_H
记录学习
展开
-
分组位运算-数组中数字出现的次数(Go语言)
题目剑指offer56-I解题思路预备知识:异或运算 和 &运算1、异或运算:因为 1^1=0 1^0=0 所以 4^4 = 100 ^ 100 = 000 即 a ^ a = 0所以如果一组只有一个数出现一次的时候全员异或一遍即可得到这个特殊的数 eg:[3,1,3] = 3 ^ 1 ^ 3 = 12、&运算1&1=1 1&0=0 0&0=0 所以 6 & 1 = 110 & 001 = 000 或 6 & 4 = 1原创 2021-03-05 15:22:26 · 292 阅读 · 0 评论 -
图解反转链表II-leetCode92(Go语言)
反转链表II题目关键点其实反转链表II相对于反转链表(leetcode-206)来说关键就是记录一些关键的结点:pre结点(m-n部分反转后的链表头结点的前置结点,即是m-1位置的那个结点)tail结点(m-n部分反转后的链表的尾结点,即是m位置的那个结点)图解流程下图为示例的详细过程代码(Go语言)type ListNode struct { Val int Next *ListNode}func reverseBetween(head *ListNode, m int原创 2021-02-06 15:46:33 · 226 阅读 · 0 评论 -
动态规划的详细思路-leetcode198打家劫舍(Go语言)
我们先来通过枚举找寻思路:eg:例如沿街房屋的金额如该数组:[5,8,2,3,1,7]我们知道前1个房间的可偷取的最大金额为5也可以简单看出前2个房间的可偷取的最大金额为max(5,8) = 8然后到了前3个房间我们就需要思考是否选择偷取第3个房间的金额,所以有以下选择:(1)不偷取第3个房间:那么前3个房间的可偷取最大金额为8(2)偷取第3个房间:那么则不可以偷取第二个房间的金额,所以最大金额相当于前1 (3-2) 个房间的最大金额+第3个房间的最大金额然后比较上面两种选择最大金额哪个更.原创 2021-02-04 15:46:13 · 130 阅读 · 0 评论 -
栈的基础应用-LeetCode20有效的括号(Go语言)
题目题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “([)]”输出:false示例 4:输入:s = “{[]}”输出:true思路(流程图):遍历字符串,遇到左方向的括号就把字符push入原创 2021-02-02 16:15:58 · 122 阅读 · 0 评论