随笔分类 - golang
摘要:垃圾回收器 垃圾回收是释放掉那些不再被使用的内存空间的过程。 换句话说,垃圾回收器会去检查哪些对象超出范围并且不会再被引用到,然后它回去释放掉那些对象占用的内存空间。这个过程实在 go 程序运行中以并发的方式去进行的,不是 go 程序执行之前,也不是 go 程序执行之后。go 垃圾回收器实现的说明文
阅读全文
摘要:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 注意: 两个链表都是有序的 如果某个链表为空,那就直接返回另外一个有序链表 然后我们就要比较两个链表的节点的顺序了 首先,我们定义一个result指针 比较两个链表的第一个元素哪个比较小 result指向小
阅读全文
摘要:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,
阅读全文
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 我们只要判断每个子树中的左孩子小于根节点,右孩子大于根节点 还有一个要注意的是,空树也是二叉搜索树
阅读全文
摘要:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 我们先对数组排序,得到如下图的结果 我们要计算a+b+c=0,先对数组循环得到a,然后b就是a的索
阅读全文
摘要:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 你可以假设字符串只包含小写字母 首先看到题目的意思就是说两个字符串的字母一样,只是位置可以不一样 而且说明也说了,只包含小写字母。 那我们可以通过对两个字符串里面的字符进行排序,如果排序后的两个字符串是一样的,那么
阅读全文
摘要:我们可以直接使用reflect.DeepEqual来比较两个slice、struct或者map是否相等 对于slice,我们还可以使用另外一种方法:
阅读全文
摘要:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。 返回滑动窗口最大值 其实这道题就是求给定数组中获取全部K个连续元素中最大值的集合 首先我们可能会遇到三中情况 当原始数组为空的,那就直接返回一个空
阅读全文
摘要:设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。 这道题我们可以想
阅读全文
摘要:给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 首先我们对情况1来画图看看解题: 其实上面得这几张图也说明了,如果链表中有环得话,那么快慢指针一定会相遇。
阅读全文
摘要:使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和
阅读全文
摘要:使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 说明: 你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop fr
阅读全文
摘要:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 由题
阅读全文
摘要:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 我们先来看看图示: 引入一个curr指针,指向头元素 判断curr.Val==curr.Next.Val,如果是一样的话,那就把curr.Next指向curr.Next.Next 如果curr.Val!=curr.Next.Val,那我
阅读全文
摘要:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 乍看这道题,以为是求解1和2的随机组合=n的问题,但是我们先来看看下面的表格: 从表格看出其实是一个斐波那契数列,那么代码就很简单了
阅读全文
摘要:先看看代码: 再看看syslog的源码: 按理说这么使用是没错的,但是在Windows环境下编译的时候就会抛出: 这就不对了,明明是有的,但是却抛出未定义的错误。 那我们试试在Linux环境下编译会怎样: 没有错误抛出,那就说明这个syslog包的问题 在Windows环境下编写代码时慎重使用
阅读全文
摘要:实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 首先遇到这种题目肯定要想到使用内置得api来解答: 牛顿法:(以本题为例子) 计算平方根,其实就是计算 x^2 =n x^2 =n 的解 令f
阅读全文
摘要:google的pprof工具链 gin的pprof工具 在ginpprof可以很容易就实现集成pprof服务。 启动web服务之后,在浏览器中打开http://localhost:port/debug/pprof/即可看见: 然后我们打开http://localhost:port/debug/ppr
阅读全文
摘要:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 理解题意: 那我们就可以分为两种情况: 第一种就是当前位加1不等于10 第二种就是当前位加1等于10 但是也要注意当
阅读全文
摘要:给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。 找到最后一个单词的长度: 如果是空字符串的话,那就是没有单词嘛,那就返回0 如果字符串全是空格,那么也是返回0 找到最后一个
阅读全文

浙公网安备 33010602011771号