Leetcode
D.Guan
怕什么真理无穷 进一步有进一步的欢喜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode 201. 数字范围按位与
201. 数字范围按位与题目给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7] 输出: 4 示例 2:输入: [0,1] 输出: 0代码int rangeBitwiseAnd(int m, int n) { //无符号数按位与 //寻找公共前缀 int i=0; while(m!=n){原创 2020-11-22 15:16:25 · 227 阅读 · 0 评论 -
Leetcode | 57. 插入区间
给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[1,2],[3,10],[12,16]..原创 2020-11-04 16:55:35 · 213 阅读 · 0 评论 -
亚马逊软件开发面经
一面1.1401. 圆和矩形是否有重叠只要圆心在如图区域内则表示有解,否则没有。 int distance(int x1,int y1,int x2,int y2){ return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); } bool IncludeRectangle(int x,int y,int x1,int y1,int x2,int y2){ if(x>=x1&&x<=x2&原创 2020-09-11 23:22:26 · 792 阅读 · 0 评论 -
[C++][Leetcode][TopK]前K大问题+前K高频(堆+map)
前两天面试的时候,面试官问了前K大的问题:先是找前K大数,其次是前K高频数。按照面试官的思路一道一道展开~对总体过程中思考的知识点进行一个总结:为什么快排常用? 在大规模数据的时候,快速排序只会线性增长,而堆排序增加幅度很大,会远远大于线性。 堆排序指针寻址会耗费很多时间,但是快速排序的话只是移动到前后位置。 参考博文为什么快排最好 介绍一下C++构造函数? 构造函数没有...原创 2020-03-31 20:01:38 · 1004 阅读 · 0 评论 -
[C++][leetcode]dfs+搜索问题
dfs求解的思路:首先是确定开始的状态集合,也就是一个起点还是多个起点。其次,是搜索的集合,有多少种状态可以到达。比如上下左右是四种。最后就是按照题目要求返回求解的内容,常见的就是求连通图的个数。Leetcode980:不同路径III在二维网格 grid 上,有 4 种类型的方格:1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示...原创 2020-03-27 21:58:36 · 563 阅读 · 0 评论 -
[剑指offer][Leetcode.104]二叉树的最大深度
题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例: 给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。分析递归方法我们如何求解深度呢,如果没有节点,返回0。如果只有一个节点,那么深度为1.如果只有左子树,没有右子树,那么深度是左子树的深度+1,反之亦然。如...原创 2020-02-11 21:52:20 · 259 阅读 · 0 评论 -
[剑指offfer]面试题8:二叉树的下一个节点
1.题目给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。2.code/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct Tr...原创 2019-10-26 15:17:24 · 235 阅读 · 0 评论 -
[剑指offer][[Leetcode]面试题7:重建二叉树
1.题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2.code/** * Definition for binary tree * struct TreeNode { * i...原创 2019-10-26 14:14:07 · 241 阅读 · 0 评论 -
[剑指offer][leetcode.142]环形链表II
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1...原创 2020-02-08 15:17:04 · 363 阅读 · 0 评论 -
[剑指offer][leetcode.141]环形链表
题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:...原创 2020-02-08 15:04:13 · 347 阅读 · 0 评论 -
[剑指offer][leetcode.160]相交链表
题目编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 ...原创 2020-02-08 01:40:45 · 261 阅读 · 0 评论 -
[剑指offer][Leetcode.234]回文链表
题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?分析判断一个链表是否为回文链表,首先需要找到中点,然后进行对比。于是,采用快慢指针找到中点。在找中点的时候,我们采用慢指针,边遍历边反转。当我...原创 2020-02-08 00:40:49 · 229 阅读 · 0 评论 -
[剑指offer][leetcode.92]反转链表II
题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL分析使用头插法进行反转,也就是不断地将需要反转的节点插在前面。为了方便,我们新建一个哨兵...原创 2020-02-07 20:21:06 · 161 阅读 · 0 评论 -
[剑指offer][leetcode.206]反转链表
题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?分析1.迭代反转对于一个没有头节点的链表进行反转:起码需要只要反转哪个节点(pcur)以及反转后指向哪个节点(pre)。迭代过程需要更...原创 2020-02-07 18:00:08 · 283 阅读 · 1 评论 -
[剑指offer][leetcode]面试22:链表中倒数第k个节点
题目输入一个链表,输出该链表中倒数第k个结点。分析类似于链表的中间节点,我们采用快慢指针通过遍历一次链表解决这个问题。我们要找的是倒数第k个节点,倒数第k个节点和最后一个节点距离是k-1。由此,如果快指针和慢指针相距k-1个节点,当快指针到达最后一个节点的时候,慢指针刚好到达倒数第k个节点。所以我们设立两个指针,快指针先走k-1步,然后两个指针同时开始走,当快指针到末尾的时候,慢指针到达...原创 2020-02-07 16:53:28 · 552 阅读 · 0 评论 -
[剑指offer][leetcode.876]链表的中间节点
题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ...原创 2020-02-07 16:21:09 · 330 阅读 · 0 评论 -
[剑指offer][leetcode.83]删除排序链表中的重复元素
题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3分析和移除链表元素同理,只是比较的是相邻元素。ListNode* deleteDuplicates(ListNode* head) {...原创 2020-02-06 18:56:03 · 194 阅读 · 0 评论 -
[剑指offer][leetcode.203]移除链表元素
题目删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5分析为了防止删除的是头节点,增加一个空的头节点,然后依次遍历就可以。如果当前节点是val,那么指向其的下一个节点。ListNode* removeElements(Li...原创 2020-02-06 18:51:25 · 175 阅读 · 0 评论 -
[剑指offer][leetcode.237]删除链表中的节点
题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 ...原创 2020-02-06 18:46:21 · 217 阅读 · 0 评论 -
[剑指offer][leetcode]面试题18:删除链表的节点
1. 在O(1)时间内删除链表节点给定一个单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。首先定义一个结构体表示链表元素typedef struct ListNode* Link;//写一个包括链表结构的结构体struct ListNode{ int val; struct ListNode* next;};将链表元素存储在数组中...原创 2020-02-06 18:36:03 · 374 阅读 · 0 评论 -
[剑指offer][链表]面试题6:从尾到头打印链表
题目输入一个链表,按链表从尾到头的顺序返回一个ArrayList。分析从尾到头要求先遍历到的后面输出,也就是先进后出。所以我们使用栈来保存从前到后遍历的元素即可。 vector<int> printListFromTailToHead(ListNode* head) { //先进后出的思想 stack<int>s; ...原创 2020-01-30 19:50:48 · 179 阅读 · 0 评论 -
[Leetcode.125]验证回文串
题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false分析我们使用双指针来做,iii一个指针指向开头,jjj一个指针指向结尾。如果相...原创 2020-01-30 17:06:49 · 174 阅读 · 0 评论 -
[Leetcode.88][数组]合并两个有序数组
提要这是一道根据面试题5:替换空格从后向前遍历的一道拓展题。题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:n...原创 2020-01-30 15:41:52 · 193 阅读 · 0 评论 -
[剑指offer][字符串]面试题5:替换空格
题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。分析这道题是一道字符串处理的题,从前向后遍历,如果遇到空格,就将后面的元素向后移动两位。如此一来,如果有n个空格,后面的串就要移动n次,时间复杂度为O(n2)O(n^2)O(n2)。需要明确的是,每次遇到空格处理之后,串尾的长度...原创 2020-01-30 15:11:57 · 220 阅读 · 0 评论 -
[Leetcode]数组形式的整数加法
题目对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = ...原创 2020-01-29 22:33:08 · 232 阅读 · 0 评论 -
[剑指offer]面试题3+:数组中的重复元素
根据剑指offer数组中的重复元素,我在Leetcode上面找了几道类似的题进行练习。1.删除排序数组中的重复项I(Leetcode.26)给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], ...原创 2020-01-27 23:29:18 · 333 阅读 · 0 评论 -
剑指offer:面试题3:数组中重复的数字
1.数组介绍首先对数组进行基本的介绍,数组的特点就是连续存储。在C++中,我们一般有两种类型的数组:一种是静态数组,我们事先知道其大小。一种是动态数组,也就是vector,事先可以不规定大小。2.题目介绍这一类型题目有很多种类型,比如数组是否有序,重复元素的个数等等。2.1 找出数组中的重复元素在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有...原创 2020-01-27 17:31:43 · 394 阅读 · 0 评论 -
[leetcode][回溯][排序树]全排列
1.题目给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]2.代码class Solution {public: vector<vector<int>>res...原创 2019-11-23 20:50:32 · 350 阅读 · 0 评论 -
[leetcode][位运算]两整数之和
1.题目不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-two-integers著作权归领扣...原创 2019-10-12 17:29:14 · 331 阅读 · 0 评论 -
[leetcode][C++][数组]从排序数组中删除重复项
1.题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 12。 你不需要考虑数组中超出新长度后面的元素。...原创 2019-09-22 13:52:15 · 367 阅读 · 0 评论 -
[leetcode][C++]叶子相似的树
1.题目请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。[3,5...原创 2019-09-12 18:29:19 · 380 阅读 · 0 评论 -
[leetcode][C++]用栈实现队列
1.题目使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); que...原创 2019-09-11 20:19:14 · 314 阅读 · 0 评论 -
[Leetcode][C++]用队列实现栈
1.题目使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的...原创 2019-09-11 16:52:44 · 283 阅读 · 0 评论 -
[leetcode.101]对称二叉树
1.题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 32.code/** ...原创 2019-09-11 15:58:24 · 373 阅读 · 0 评论 -
[Leetcode.100]相同的树
1.题目给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...原创 2019-09-10 21:55:54 · 373 阅读 · 0 评论 -
[Leetcode][C++]回文链表
1.题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true2.code/** * Definition for singly-linked list. * struct ListNode { * int val; * List...原创 2019-09-10 21:19:57 · 335 阅读 · 0 评论 -
[leetcode 83]删除排序链表中的重复元素
大一学C语言的时候就没有学好链表,对链表一直都比较害怕。这一周芳芳决定直面自己的恐惧,从链表开始搞起。1.题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->32.代码实现(C语...原创 2019-04-08 11:40:14 · 193 阅读 · 0 评论 -
[leetcode 206]反转链表
1.题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?2.代码(python)# Definition for singly-linked list.# class ListNo...原创 2019-04-10 16:02:09 · 170 阅读 · 0 评论 -
[leetcode 541]反转字符串
1.问题描述给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = "abcdefg", k = 2输出: "bacdfeg"要求:该字符串只包含小写的英文字母。给定字符串的...原创 2019-03-23 21:36:45 · 136 阅读 · 0 评论 -
[leetcode 500]键盘行
1.题目描述给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。输入: ["Hello", "Alaska", "Dad", "Peace"]输出: ["Alaska", "Dad"] 注意:你可以重复使用键盘上同一字符。你可以假设输入的字符串将只包含字母。code:class Solution(object): de...原创 2019-03-18 21:54:23 · 194 阅读 · 0 评论
分享