面试
文章平均质量分 79
Tanyongyin
公众号:【程序员小熊】 华为程序员,作者自学计算机,公众号主要分享:各大厂笔试/面试中的高频算法题、编程语言、数据结构与算法和后台开发相关资料。
展开
-
互联网经典算法面试题-验证二叉搜索树
前言大家好,我是熊哥。今天给大家带来一道与二叉树相关的面试高频题,这道题在半年内被谷歌、字节、微软和亚马逊等大厂作为面试题,即力扣上的第 98 题-验证二叉搜索树。本文主要介绍递归和深度优先搜索两种方法来解答此题,供大家参考,希望对大家有所帮助。验证二叉搜索树给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。..原创 2021-11-25 02:02:49 · 678 阅读 · 0 评论 -
动画图解一道互联网大厂的高频面试题-数组的相对排序
前言大家好,我是来自于华为的程序员小熊。今天给大家带来一道与数组相关的面试高频题,这道题是谷歌、腾讯、苹果和亚马逊等大厂的面试题,即力扣上的第 1122 题-数组的相对排序。本文主要介绍计数排序+哈希表的策略来解答此题,供大家参考,希望对大家有所帮助。数组的相对排序给你两个数组,arr1和arr2,arr2中的元素各不相同arr2中的每个元素都出现在arr1中对arr1中的元素进行排序,使arr1中项的相对顺序和arr2中的相对顺序相同。未在arr...原创 2021-09-15 15:55:05 · 163 阅读 · 0 评论 -
只赢不亏的买股票的方法
前言大家好,我是来自于「华为」的「程序员小熊」。今天给大家带来一道与「贪心算法」相关的题目,这道题同时也是字节、苹果和亚马逊等互联网大厂的面试题,即力扣上的第 122 题-买卖股票的最佳时机 II。本文主要介绍「贪心」的策略来解答此题,供大家参考,希望对大家有所帮助。买卖股票的最佳时机 II题目描述示例解题思路贪心算法是通过做出一系列选择来求出问题的最优解,在每个决策点,它做出当时看来最佳的选择。通过「局部最优」的选择,寄希望实现「全局最优解」。「举例」以 pri原创 2021-08-19 00:02:14 · 139 阅读 · 0 评论 -
如何快速合并两个有序数组?
前言大家好,我是来自于「华为」的「程序员小熊」。今天给大家带来一道与「数组」相关的题目,这道题同时也是字节、微软和亚马逊等互联网大厂的面试题,即力扣上的第 88 题-合并两个有序数组。本文主要介绍「逆向双指针」的策略来解答此题,供大家参考,希望对大家有所帮助。合并两个有序数组题目描述示例1:输入:nums1=[1,2,3,0,0,0],m=3,nums2=[2,5,6],n=3输出:[1,2,2,3,5,6]示例2:输入:nums1=[1]...原创 2021-07-11 11:46:00 · 4815 阅读 · 0 评论 -
专业小偷才能盗取最大金额的现金
前言大家好,我是「程序员小熊」,就职于「华为」。今天给大家带来一道与「动态规划」相关的题目,这道题同时也是包括字节、微软和谷歌等互联网大厂的面试题,即力扣上的第 198 题-打家劫舍。本文主要介绍两种「动态规划」的策略来解答此题,供大家参考,希望对大家有所帮助。打家劫舍题目示例1:输入:[1,2,3,1]输出:4解释:偷窃1号房屋(金额=1),然后偷窃3号房屋(金额=3)。偷窃到的最高金额=1+3=4。示例2:输...原创 2021-07-01 23:37:35 · 632 阅读 · 2 评论 -
最大子序和,你会吗?
前言大家好,我是来自「华为」的「程序员小熊」。清明假期马上就要结束了,小熊给大家带来一道笔试和面试中与「动态规划」相关的常考的简单题,这道题被字节、微软、亚马逊和苹果等各大互联网大厂作为笔试题。这道题就是 Leetcode 的第 53 题-最大子序和,了解「动态规划」的童鞋,在看到最大两个字的时候,很容易就会想到用「动态规划」去解答,因为涉及到「最优解」的问题,一般都可以通过动归去做。本题小熊提供「动态规划」的思路供大家参考,希望对大家有所帮助。题目给定一个整数数组nums,找到一个具..原创 2021-06-14 09:07:02 · 142 阅读 · 0 评论 -
查找表经典问题
前言大家好,我是来自「华为」的「程序员小熊」。清明假期到了,小熊给大家带来一道简单题,让大家放松放松。这道题也是各大厂的面试题,例如苹果、脸书、亚马逊和微软等等。本文主要介绍通过「查找表」的策略来解答此题,同时也会介绍「双指针」中的「对撞指针」方法,供大家参考,希望对大家有所帮助。两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个...原创 2021-06-12 18:36:23 · 212 阅读 · 0 评论 -
链表问题,如何优雅递龟?
前言大家好,我是来自「华为」的「程序员小熊」。绝大部分童鞋都知道,解决「链表」相关问题时,常用的解题套路主要包括「双指针」、「迭代」和「虚拟头节点」等等。今天「小熊」介绍采用「递归」的策略,秒杀「链表」相关问题,使得代码更「优雅」,并以两道常见的面试题作为例题来讲解,供大家参考,希望对大家有所帮助。链表与递归链表具有天然的递归性,一个链表可以看出头节点后挂接一个更短的链表,这个更短的链表是以原链表的头节点的下一节点为头节点,依次内推,直到最后的更短的链表为空,空本身也是一个链表(最基础的)。原创 2021-06-05 14:16:43 · 111 阅读 · 0 评论 -
手撕腾讯面试题-乘积最大子数组
前言动态规划是面试中常考的知识点,特别是一些互联网大厂的面试,可以说必会考到一道涉及动态规划的算法题,因此掌握动态规划,能提高面试的通过率。本文的内容为通过一道腾讯的面试题,即力扣 152. 乘积最大子数组,由暴力法求解一步一步演化到由动态规划进行求解来介绍动态规划。题目给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例解题思路注意点本题要求的是乘积最大的连续子数组而不是乘积最大的子序列,因此要原创 2021-05-10 16:39:36 · 239 阅读 · 0 评论 -
互联网大厂算法面试题之旋转链表
大家好,我是 程序员小熊,来自某 大厂 的程序猿,今天带来一道来自互联网大厂(字节、腾讯、微软、苹果等) 面试题 Leetcode 61. 旋转链表 ,提供 虚拟头节点 + 双指针 的解题思路,采用 动图 的方式进行层层剖析,供大家参考,希望对大家无论是刷题还是面试都有所帮助。61. 旋转链表描述给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。解题思路思考考虑以下几种情况:特殊情况 链表为空或只有一个节点; k 的值.原创 2021-04-29 19:58:58 · 213 阅读 · 0 评论 -
看完互联网大佬的「LeetCode 刷题手册」, 手撕了 400 道 Leetcode算法题
大家好,我是 程序员小熊 ,来自 大厂 的程序猿。相信绝大部分程序猿都有一个进大厂的梦想,但相较于以前,目前大厂的面试,只要是研发相关岗位,算法题基本少不了,所以现在很多人都会去刷 Leetcode 来保持手感,但有不少人反馈刷题效率很低,今天笔者抽空整理了 三份 分别来自 谷歌的高畅、前阿里的霜神和灵魂机器 的刷题手册,以供大家参考,希望对大家无论是刷题还是面试都有所帮助。一、 A LeetCode Grinding Guide (C++ Version)作者:谷歌的高畅背景:作者在.原创 2021-04-23 22:53:17 · 503 阅读 · 0 评论 -
好家伙,你管这破玩意叫“双指针”?
大家好,我是 程序员小熊 ,来自华为的程序员。今天给大家带来一道亚马逊的面试题,即 LintCode 1478 · 最接近target的值 ,提供 双指针 的解题思路,供大家参考,希望对大家无论是刷题还是面试都有所帮助。1478 · 最接近target的值描述给出一个数组,在数组中找到两个数,使得它们的和最接近目标值但不超过目标值,返回它们的和。解题思路思考: 如果数组是已按照 升序排列 的,那么这个题目是不是就很好做?那样的话,可以定义两个分别 指向数组的第一个元素和最后一个元.原创 2021-04-18 11:46:24 · 213 阅读 · 0 评论 -
汉明距离(位运算,清晰图解)
题目两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意: 0 ≤ x, y < 2^31.示例:解题思路要找出两个整数对应二进制位不同的位置的数目,对 位运算 有所了解的童鞋,应该会很自然地想到位运算中的 按位异或,通过将两个整数对应二进制位 按位异或(同一位置,元素相同异或得 0 或者得 1) 找到其二进制不同的位置,找到之后,只需要统计异或的结果中 1 的个数即可。举栗以 示例 为栗,如原创 2021-04-07 15:55:59 · 1038 阅读 · 0 评论 -
双指针团灭删除有序数组中的重复项系列
26. 删除有序数组中的重复项给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地修改输入数组 并在使用 O(1) 额外空间的条件下完成。解题思路由于题目已明确告知 不使用额外数组空间,必须在原地修改输入数组,因此不能采用诸如 哈希表 等通过开辟额外空间的方法去解决。又由于题目告知数组是 升序排列 的,因此可以通过 设置两个均指向数组第一个元素(从第零个元素开始算)的指针(下标),一个用原创 2021-04-07 15:00:22 · 131 阅读 · 0 评论 -
字符串最长子串难?滑动窗口拯救你
题目:leetcode3. 无重复字符的最长子串目录题目leetcode3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。子串:串中任意个连续的字符组成的子序列称为该串的子串。解题思路要求字符串的不含有重复字符的最长子串的长度,只需要先找到最长子串然后再求其长度即可,找最长子串我们可以通过滑动...原创 2021-02-20 01:50:04 · 182 阅读 · 0 评论 -
leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
更多精彩文章请关注微信公众号:TanLiuYi00前言今天主要讲解的内容是:如何在已排序的数组中查找元素的第一个和最后一个位置。以 leetcode 34 题作为例题,提供二分查找的解题思路,供大家参考。题目详述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:n原创 2021-02-05 00:54:14 · 304 阅读 · 0 评论 -
四种方法解决leetcode203. 移除链表元素
更多精彩文章请关注微信公众号:TanLiuYi00本文主要针对移除单链表中的元素,提供了四种解题思路,供大家参考,希望能对大家提供帮助。题目解法一:递归思路:在之前的链表推文字节面试题 leetcode 83. 删除排序链表中的重复元素和面试不可不会的单链表反转中都提到了链表具有天然的递归性,一个链表可以看成头节点后面挂接一个更短的(缺少头节点)的链表,同理这个更短的链表也可以看成头节点后面挂接一个更更短的链表;依次类推。本题也可采用这种思路来做,具体如下图所示。如上图示,.原创 2021-02-01 02:09:02 · 432 阅读 · 0 评论 -
单链表之环形链表
更多精彩文章请关注微信公众号:TanLiuYi00不论在面试或者刷题过程中,很大概率都会遇到环形链表这种类型的题目,例如 leetcode141. 环形链表 以及 leetcode 142. 环形链表 II等,本文主要介绍通过快慢指针法来解决此类题型,以供大家参考。环形链表环形链表大致样子如下图所示:快慢指针法判断链表是否是环形链表,一般通过快慢指针法。操作步骤一、分别定义两个均指向头节点的指针(fast/slow);二、快指针每次走两步,慢指针每次走一步;...原创 2021-02-01 01:49:31 · 219 阅读 · 0 评论 -
微信信用卡还款后台开发最新面试真题
今天(2021.01.23),一位做软件开发的朋友参加了腾讯微信部门,信用卡还款后台开发视频面试,分享一下面试官出的题,供大家参考,以备不时之需。岗位:微信信用卡还款后台开发负责信用卡还款相关系统的后台开发;参与模块设计开发,业务逻辑开发,银行接入等工作;参与相关子系统及业务流程优化重构,研发过程优化工作。工作要求计算机、通信相关专业本科以上学历;3年以上linux服务器端软件开发经验; 编程基本功扎实,精通C/C++,熟悉面向对象技术,设计模式; 精通TCP/IP协议相关知..原创 2021-01-23 23:20:05 · 272 阅读 · 0 评论 -
字节面试题 leetcode 83. 删除排序链表中的重复元素
更多精彩文章请关注微信公众号:TanLiuYi00今天给大家分享一道字节跳动的面试题,也就是 Leetcode83. 删除排序链表中的重复元素,提供三种(递归、迭代(单指针、双指针))解题思路,供大家参考。 题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->...原创 2021-01-23 11:58:44 · 259 阅读 · 0 评论 -
面试不可不会的单链表反转
更多精彩文章请关注微信公众号:TanLiuYi00单链表反转是面试中常考的一道题,这道题看起来简单,但是能一遍写出 bug free 的代码相当不容易,本文主要提供递归和迭代两种解题方法,供大家参考。题目 ...原创 2021-01-23 11:41:26 · 152 阅读 · 2 评论