自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 2020字节跳动秋招总结

字节的面试过程比较坎坷,主要语言为C++,投了提前批内推的杭州安全与风控直接简历被挂,随后开启了被HR反复打捞的路途中。base:北京 产品研发与工程架构部 客户端开发 8月11号——8月20号一面: 手撕线程安全的单例模式、找出链表的倒数第k个节点,专业基础考察的比较广二面: 手撕string类的实现、智能指针的实现,再加一道leetcode中等题,侧重于语言基础和计算机网络三面: 考察STL迭代器、vector等的常规使用,深挖项目,面试官全称比较严肃,有点吓人8月20号三面结束后,

2021-03-16 14:41:21 717

原创 LeetCode算法练习——树(三)

LeetCode501. 二叉搜索树中的众数给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。class Solution{public: vector<int> findMode(TreeNode *root){ vector<int> res; // 要返回的结果 // max_count: 结果元素的出现次数 // cur_count: 当前元素的出现次数

2020-08-07 15:23:05 301

原创 LeetCode算法练习——树(二)

树的学习先从一些比较简单的入门题开始,考察的还是对于树的递归形式的理解。LeetCode面试题 04.04. 检查平衡性 && 剑指 Offer 55 - II. 平衡二叉树实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1(此题本人的解法也包含了求二叉树的最大深度)。class Solution {public: bool res = true; int maxDepth(TreeNode* root

2020-08-07 09:04:20 265

原创 树(多叉树)的建立、遍历、翻转

昨天帮朋友做网易的笔试题(吐槽一下网易的题目有点变态),遇到了一道翻转树的题,于是抽空做了一下。翻转树的结构,如果在层序遍历时将孩子数组翻转输出并没有改变树的结构,当然你可以先这样输出再建树,这样做会比较麻烦,正确的做法是需要递归翻转每个孩子数组。void MTree::init(MNode *root) { this->root = root; }MNode* MTree::getNode() { return root; }void MTree::putC

2020-07-22 14:00:23 685

原创 LeetCode算法练习——回溯&&深搜(三)

LeetCode51. N皇后n皇后问题研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "....

2020-07-15 21:44:55 152

原创 LeetCode算法练习——回溯&&深搜(二)

下面整理一下排列搜索类的回溯算法,该类题目数组中的元素需要重复访问,但访问结果构成的集合又不能重复,因此需要用visited数组标记该元素有没有被访问过,这样在下一次搜索时会避开。LeetCode46. 全排列 && LeetCode47. 全排列 IILeetCode46给定一个 没有重复 数字的序列,LeetCode47(剑指 Offer 38. 字符串的排列也与之类似,只不过变换成了字符形式)则要求给出可重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,

2020-07-15 17:28:10 185

原创 LeetCode算法练习——回溯&&深搜(一)

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯在迷宫搜索中使用很常见,就是这条路走不通,然后返回前一个路口,继续下一条路。回溯算法说白了就是穷举法。不过回溯算法使用剪枝函数,剪去一些不可能到达 最终状态(即答案状态)的节点,从而减少状态空间树节点的生成。回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,

2020-07-15 14:54:03 432

原创 LeetCode算法练习——动态规划提高(五)

LeetCode309. 最佳买卖股票时机含冷冻期给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]定义状态:...

2020-07-03 11:30:57 216

原创 LeetCode算法练习——动态规划提高(四)

LeetCode139. 单词拆分给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple", wordDict = ["apple", "pen.

2020-06-27 13:24:22 224

原创 LeetCode算法练习——树(一)

树的定义,想必大家都不陌生,在树正式进入前,我们需要回顾一下二叉树的几种遍历方法,尤其很多题目都是围绕树的递归遍历进行考察。树的递归遍历struct Node{ int val; Node * left; Node * right; Node(int x) :val(x), left(nullptr), right(nullptr){};}; void creatBinaryTree(Node * &root){ //树的创建 int x; cin >

2020-06-24 22:20:31 295 1

原创 LeetCode算法练习——链表(二)

LeetCode23. 合并K个排序链表合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路:将多条链表中的每个节点值压入同一个容器; 对这些容器内的元素进行排序; 最后将容器内的元素串联成链表。class Solution {public: L..

2020-06-24 21:38:32 149

原创 LeetCode算法练习——链表(一)

LeetCode206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL该题虽然为链表的基础操作,但是听说面试很常考,逻辑也很容易出错。我们需要两个指针,一个作为游标,一个作为反转链表的头节点,操作示意图如下:class Solution {public: ListNode* reverseList(ListNode* head) {

2020-06-24 20:37:32 267

原创 LeetCode算法练习——动态规划提高(三)

LeetCode剑指 Offer 46. 把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"此题最关键的是将数值转换成字符串,然后判定连续

2020-06-24 17:04:42 233

原创 LeetCode算法练习——动态规划提高(二)

这一部分,对已经做过的技术类型的dp问题进行总结。LeetCode62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -&

2020-06-23 23:00:53 383

原创 LeetCode算法练习——动态规划提高(一)

LeetCode5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"对于一个子串而言,如果它是回文串,并且长度大于 2,那么将它首尾的两个字母去除之后,它仍然是个回文串。例如对于字符串 “ababa”,如果我们已经知道 “bab”是回文串,那么 “ababa” 一定是回文串,这是因为它的首尾.

2020-06-23 21:48:36 238

原创 LeetCode算法练习——动态规划入门(三)

LeetCode198. 打家劫舍 && LeetCode 面试题 17.16. 按摩师打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,

2020-06-19 15:39:17 251

原创 LeetCode算法练习——动态规划入门(二)

LeetCode746. 使用最小花费爬楼梯数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。 示例 2:

2020-06-19 14:52:35 250

原创 LeetCode算法练习——动态规划入门(一)

动态规划动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。动态规划往往用于优化递归问题,例如斐波那契数列,如果运用递归的方式来求解会重复

2020-06-19 13:13:31 340

原创 LeetCode算法练习——字典树(一)

字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。字典树的性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符 从根节点到某一个节点,路径上经过的字符连接起来,就是该节点对应的字符串 每个节点的所有子节点包含的字符都不相同。LeetCode20...

2020-06-18 20:30:40 475

转载 Leetcode10 正则表达式匹配

本题为Leetcode上的困难题,给出了别人相应的题解,供自己和相关爱好者参考学习。题目描述请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整

2020-06-14 16:45:45 457

转载 C++总结 STL之String的用法

1. 构造函数string 类有多个构造函数,用法示例如下: string s1(); // si = "" string s2("Hello"); // s2 = "Hello" string s3(4, 'K'); // s3 = "KKKK" string s4("12345", 1, 3); //s4 = "234",即 "12345" 的从...

2019-08-02 00:39:33 192

原创 C++总结 STL之vector的用法

介绍vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,...

2019-08-01 23:39:17 237

原创 第一章 网络基础知识(二)

1.3 协议1.3.1 随处可见的协议 在计算机网络与信息通信领域里,人们经常提起“协议”一词。互联网中常用的具有代表性的协议有IP、TCP、HTTP等。而LAN(局域网)中常用的协议有IPX/SPX等。 “计算机网络体系结构”将这些网络协议进行了系统的归纳。TCP/IP就是IP、TCP、HTTP等协议的集合。现在,很多设备都支持TCP/IP。除此之外,还有很...

2019-06-23 23:02:52 309

原创 第一章 网络基础知识(一)

1.1 计算机网络出现的背景1.1.1 计算机的普及与多样化计算机正对我们的社会与生活产生着不可估量的影响。而自其诞生伊始,它也经历了一系列的演变与发展,性能逐年增强,机体规模正逐渐下降,多样普及的同时,其便捷性也在逐渐提高。1.1.2 从独立模式到网络互联模式起初,计算机以单机模式被广泛使用(这种模式也叫独立模式)。然而随着计算机的不断发展,人们已不再局限于单机模式,而是将一...

2019-03-05 21:50:48 989

原创 第一章 引言概论

AI深度学习:一种让计算机从经验中学习并根据层次化的概念体系来理解世界的解决方法,而每个概念则通过与某些相对简单的概念之间的关系来定义。让计算机从经验获取知识,可以避免由人类来给计算机形式化地制定它需要的所有知识。层次化的概念让计算机构建较简单的概念来学习复杂概念。如果绘制出表示这些概念如何建立在彼此之上的图,我们将得到一张“深”(层次很多)的图。人工智能的知识库方法:计算机可以使用逻辑推

2018-04-12 19:09:39 304

原创 首都查找(深搜)

## 首都查找例子 ##有如图5.1字母方阵: 字母方阵中藏着九个首都名:DUBLIN、TOKYO、LONDON、ROME、BONN、PARIS、ZURICH、OSLO、LIMA,试设计一程序指出首都名的起始字母在字母方阵中行号和列号及字母的走向(如图5.2)。 比如下结果: 解题思路: 设字母方阵的左上角为坐标原点,令一维整型数组b[8]表示八个方向,一维整型数组d

2016-04-19 13:59:41 228

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除