
OJ面试题
CXYhh121
这个作者很懒,什么都没留下…
展开
-
【LeetCode】—— 相交链表LeetCode160题
题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 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 (...原创 2019-02-01 16:32:10 · 690 阅读 · 0 评论 -
【Leetcode】—— 二叉树的层次遍历
一、leetcode102题 二叉树的层次遍历1.1 题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]1.2 解题思...原创 2019-04-07 21:19:55 · 681 阅读 · 0 评论 -
【LeetCode】—— 前k个高频单词和元素
一、前k个高频单词1.1 题目描述给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”] 解析: “i” 和 “love” 为出现次数最...原创 2019-04-13 22:16:37 · 632 阅读 · 0 评论 -
【LeetCode】—— 路径相关OJ合集
一、路径总和ILeetCode112题1.1 题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4...原创 2019-05-02 10:07:40 · 306 阅读 · 0 评论 -
【LeetCode】—— 杨辉三角形
一、LeetCode118题杨三角形1.1 题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5 输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]1.2 解题思路其实vector<vector <int>>的...原创 2019-04-25 17:28:32 · 348 阅读 · 0 评论 -
【LeetCode】—— unordered_map/set的应用
一、重复N次的元素LeetCode961题1.1 题目描述在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。返回重复了 N 次的那个元素。示例 1:输入:[1,2,3,3]输出:3示例 2:输入:[2,1,2,5,3,2]输出:2示例 3:输入:[5,1,5,2,5,3,5,4]输出:5提示:4 <= A.leng...原创 2019-05-08 17:54:20 · 885 阅读 · 0 评论 -
【LeetCode】—— 环形链表 II(leetcode 142)
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释...原创 2019-01-17 19:48:50 · 218 阅读 · 0 评论 -
【LeetCode】—— 链表套路之快慢指针
快慢指针快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。例如可以让快指针每次沿链表向前移动2,慢指针每次向前移动1次。快慢指针在链表中的应用一、环形链表(LeetCode141题)解题思路如果链表存在环,就好像操场的跑道是一个环形一样。此时让快慢指针都从链表头开始遍历,快指针每次向前移动两个位置,慢指针每次向前移动一个位置;如果快指针到达NULL,说明链表以NULL为结尾...原创 2019-05-15 19:20:45 · 331 阅读 · 0 评论 -
【LeetCode】—— 链表面试OJ题(下)
一、合并两个有序链表LeetCode21题1.1 题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1-&amp;gt;2-&amp;gt;4, 1-&amp;gt;3-&amp;gt;4输出:1-&amp;gt;1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;4原创 2019-01-29 20:24:22 · 257 阅读 · 0 评论 -
【LeetCode】—— 环形链表 I (leecode 141)
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true...原创 2019-01-17 19:15:37 · 260 阅读 · 0 评论 -
【LeetCode】—— 最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6...原创 2019-01-06 18:05:23 · 2267 阅读 · 4 评论 -
【LeetCode】—— 根据二叉树创建字符串
采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / \ 2 3 / 4输出: “1(2(4))(3)”解释: 原本将是“1(2(4)())(...原创 2019-01-06 17:58:24 · 311 阅读 · 0 评论 -
【LeetCode】—— 字符串OJ题(C++实现)
一、反转字符串LeetCode 344题**1.1 题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o&q原创 2019-01-23 17:55:32 · 970 阅读 · 0 评论 -
【LeetCode】—— 字符串OJ题(C++实现)
一、验证回文串LeetCode125题1.1 题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false1.2 解题思路1.3 代码实现...原创 2019-01-27 16:18:52 · 310 阅读 · 0 评论 -
【LeetCode】—— 用队列实现栈
使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 ...原创 2019-01-08 19:24:46 · 184 阅读 · 0 评论 -
【LeetCode】—— 栈实现队列
使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue.pop();...原创 2019-01-08 19:11:02 · 184 阅读 · 0 评论 -
【LeetCode】—— 简单的OJ题
一、LeetCode66题 加一1.1 题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]...原创 2019-04-01 23:21:15 · 550 阅读 · 1 评论 -
【LeetCode】—— 二叉树的深度
一、LeetCode104题 二叉树的最大深度1.1 题目描述定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。...原创 2019-04-10 15:45:49 · 389 阅读 · 2 评论 -
【LeetCode】—— 回文链表LeetCode234题
题目描述请判断一个链表是否为回文链表。示例 1:输入: 1-&gt;2输出: false示例 2:输入: 1-&gt;2-&gt;2-&gt;1输出: true解题思路代码实现//1-&gt;2-&gt;3-&gt;3-&gt;2-&gt;1struct ListNode* reverselist(struct ListNode* hea原创 2019-02-02 16:30:21 · 268 阅读 · 0 评论 -
【LeetCode】—— 复制带随机指针的链表LeetCode138题
题目描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深度拷贝。解题思路代码实现typedef struct RandomListNode RLNode;struct RandomListNode *copyRandomList(struct RandomListNode *head) { RLNode* cur =...原创 2019-02-03 20:59:41 · 221 阅读 · 0 评论 -
【LeetCode】—— 设计循环队列LeetCode622题
循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构...原创 2019-01-09 17:33:44 · 633 阅读 · 0 评论 -
【LeetCode】—— 有效括号LeetCode20题
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:...原创 2019-02-04 13:27:49 · 207 阅读 · 0 评论 -
【LeetCode】—— 二叉树基础面试题(上)
一、二叉树的前序遍历(递归实现)LeetCode144题1.1 题目描述给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]1.2 解题思路1.3 代码实现int treeSize(struct TreeNode* root)//...原创 2019-02-05 19:16:47 · 327 阅读 · 0 评论 -
【LeetCode】—— 二叉树基础面试题(下)
一、另一棵树的子树LeetCode572题1.1 题目描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2...原创 2019-02-06 22:43:57 · 216 阅读 · 0 评论 -
【LeetCode】—— 构建二叉树LeetCode105题
根据一棵树的前序遍历与中序遍历构造二叉树。注意:假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 /** * Definiti...原创 2019-01-07 16:05:44 · 461 阅读 · 0 评论 -
【LeetCode】—— 构造二叉树LeetCode106题
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7/** * Definition for a binary tree node...原创 2019-01-07 18:44:42 · 390 阅读 · 0 评论 -
【LeetCode】—— 二叉树进阶面试题
一、根据二叉树创建字符串LeetCode606题1.1 题目描述空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / \ 2 3 / 4 输出: "1(2(4))(3)"解释: 原本将是“1(2(4)...原创 2019-02-09 10:32:46 · 414 阅读 · 1 评论 -
【LeetCode】—— 二叉树的遍历
二叉树的前序遍历(根节点,左子树,右子树)递归实现int treeSize(struct TreeNode* root)//计算所遍历二叉树节点的个数{ if(root == NULL) return 0; else return treeSize(root-&gt;left)+treeSize(root-&gt;right)+1;}//为方...原创 2019-01-07 16:16:30 · 213 阅读 · 0 评论 -
【LeetCode】—— 非递归实现二叉树的遍历(C语言)
一、二叉树的前序遍历LeetCode144题// 支持动态增长的栈typedef struct TreeNode* STDataType;typedef struct Stack{ STDataType* _array; int _top;//栈顶 int _capacity;//容量}Stack;void StackInit(Stack* ps){ assert(ps)...原创 2019-02-10 21:17:24 · 1302 阅读 · 0 评论 -
【LeetCode】—— 链表面试题(上)
LeetCode 203题 移除链表元素删除链表中等于给定值 val 的所有节点。示例:输入: 1-&gt;2-&gt;6-&gt;3-&gt;4-&gt;5-&gt;6, val = 6输出: 1-&gt;2-&gt;3-&gt;4-&gt;5解题思想:首先可以将本题分为三类情况来处理:1、链表为空时,即head == NULL,直接原创 2019-01-20 16:51:05 · 228 阅读 · 0 评论 -
【LeetCode】—— vector相关OJ题(下)
一、电话号码的字母组合1.1 题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf&q原创 2019-03-08 18:31:48 · 334 阅读 · 0 评论 -
【LeetCode】—— vector相关OJ题(上)
一、只出现一次的数LeetCode136题1.1 题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 41.2 解题思路该题实现很简单,只用让相邻的两个数...原创 2019-03-04 19:37:06 · 304 阅读 · 0 评论 -
【LeetCode】—— C++实现二叉树的遍历(非递归)
一、二叉树的前序遍历LeetCode144题题目描述及解析可参考博客https://blog.youkuaiyun.com/chenxiyuehh/article/details/86931798基本思路均相同,只是实现语言不同,C++比C语言实现要简单的多,毕竟可以直接使用vector和stack,不用像C语言一样还得自己实现一个栈,也可以将遍历序列直接存入vector中,而不用像C语言一样要遍历两遍二...原创 2019-03-10 15:25:55 · 453 阅读 · 0 评论 -
【LintCode】—— 动态规划经典题之0-1背包问题(全)
Backpack题目描述在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i]样例 1:输入: [3,4,8,5], backpack size=10 输出: 9样例 2:输入: [2,3,5,7], backpack size=12 输出: 12解题思路这里使用动态规划的思想,动态规划四部曲状态:F(i,j) 将第...原创 2019-08-25 18:57:38 · 760 阅读 · 0 评论