力扣gogogo
Go语言刷题记录
Yzx同学
我可以学
展开
-
剑指Offer57-和为s的连续正数序列-easy
试题链接题目描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。例如输入:输入:target = 9输出:[[2,3,4],[4,5]]输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]数据范围:1 <= target <= 10^5解题思路:尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组原创 2021-01-25 22:18:09 · 222 阅读 · 0 评论 -
剑指Offer09-用两个栈实现队列-easy
试题链接题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )例如输入:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]输入:["CQueue","deleteHead","appendTai原创 2021-01-25 21:08:18 · 193 阅读 · 0 评论 -
剑指Offer15-二进制中1的个数-easy
试题链接题目描述:请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2例如输入:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。输入:00000000000000000000000010000000输出:1解释:输入的二进制串原创 2021-01-23 17:35:25 · 1134 阅读 · 4 评论 -
剑指Offer25-合并两个排序的链表-easy
试题链接题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。例如输入:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4数据范围:0 <= 链表长度 <= 1000解题思路:1.初始化一个空头结点,head3和tail同时指向这个结点。head1,head2是两个链表的头结点2.循环进行合并。head1和head2都不为null时执行head1->原创 2021-01-23 17:21:15 · 153 阅读 · 0 评论 -
剑指Offer24-反转链表-easy
试题链接题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。例如输入:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL数据范围:0 <= 节点个数 <= 5000解题思路:其实就是一个转过来的过程1->2->3->4->5->NULLNULL <- 1 <- 2 <-3 <- 4 &l原创 2021-01-23 16:19:48 · 1095 阅读 · 3 评论 -
剑指Offer54-二叉搜索树的第k大节点-easy
试题链接题目描述:给定一棵二叉搜索树,请找出其中第k大的节点。例如输入:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4数据范围:1 ≤ k ≤ 二叉搜索树元素个数解题思路:二叉搜索树,左子树所有结点比原创 2021-01-23 15:15:36 · 174 阅读 · 0 评论 -
剑指Offer06-从尾到头打印链表-easy
试题链接题目描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。例如输入:输入:head = [1,3,2]输出:[2,3,1]数据范围:0 <= 链表长度 <= 10000解题思路:利用栈的后进先出的特性,遍历链表的同时往栈中插入,最后依次弹出栈中的值并保存在数组中即可。AC代码(c++)/** * Definition for singly-linked list. * struct ListNode { * int val;原创 2021-01-23 14:54:34 · 217 阅读 · 2 评论 -
剑指Offer05-替换空格-easy
试题链接题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。例如输入:输入:s = "We are happy."输出:"We%20are%20happy."数据范围:0 <= s 的长度 <= 10000解题思路:1.创建一个字符串s12.遍历s当s[i] == 空格时,s1 += “%20”否则 s1 += s[i]AC代码(c++)class Solution {public: string replaceSpace(string原创 2021-01-23 14:42:08 · 123 阅读 · 0 评论 -
剑指Offer17-打印从1到最大的n位数-easy
试题链接题目描述:输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999测试用例:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数解题思路:emm,只要n>10,这个题按说应该考虑大数,直接输出的话,出门左转。dfs,全排列,需要注意一点。不要0开头的数字。演示:AC代码(c++)/** * Definition for singly-原创 2021-01-23 14:37:16 · 110 阅读 · 0 评论 -
剑指Offer22- 链表中倒数第k个节点-easy
试题链接题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。测试用例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.解题思路:双指针,初始化两个指针,form,tail都指向head。前指针form先向前走k步。之后两个指针同时向后原创 2021-01-23 13:25:23 · 130 阅读 · 0 评论 -
剑指Offer55-二叉树的深度-easy
试题链接题目描述:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如输入:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。数据范围:节点总数 <= 10000解题思路:dfs,深度优先搜索。搜索顺序 先左子树,再右子树。最后回到此结点,取左右子树的深度最大值再 +1递归出口是非叶原创 2021-01-23 13:02:42 · 119 阅读 · 0 评论 -
剑指Offer27-二叉树的镜像-easy
试题链接题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1测试用例:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]数据范围:0 <= 节点个数 <= 1000解题思路:dfs,深度优先搜索。搜索顺序原创 2021-01-23 12:21:56 · 129 阅读 · 0 评论 -
leetcode-1379-找出克隆二叉树中的相同节点-medium
1379 找出克隆二叉树中的相同节点试题链接题目描述给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。其中,克隆树 cloned 是原始树 original 的一个 副本 。请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回节点指针,其他语言返回节点本身)。注意:你 不能 对两棵二叉树,以及 target 节点进行更改。 只能 返回对克原创 2020-09-12 11:58:40 · 260 阅读 · 0 评论 -
剑指Offer64-求1+2+...+n -medium
剑指 Offer64-求1+2+…+n试题链接题目描述求 1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3 输出: 6示例 2:输入: n = 9 输出: 45限制:1 <= n <= 10000解题思路:首先想到的就是递归,但是如何判断递归的结束条件是关键,不能用if判断,就要考虑到&&的短路功能。例如:A &&原创 2020-09-12 11:49:37 · 145 阅读 · 0 评论 -
leetcode-771宝石与石头-easy
771 宝石与石头题目描述给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。链接:https://leetcode-cn.com/problems/jewels-and-stones示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z原创 2020-09-11 20:55:11 · 143 阅读 · 0 评论 -
《剑指 Offer》- 左旋字符串
题目描述:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose" 限制:1 <= k < s.length <= 10000来源:力扣(原创 2020-06-02 10:55:41 · 220 阅读 · 0 评论