笔试面试题
rugu-sco
记得一定要快乐
展开
-
序列的子集
A B 两个有序的序列 判断 B 是否为 A 的子集 例如 : A = [1, 3, 3, 5, 7, 7, 9] B = [1, 3, 5, 7] 则 B 为 A 的子集解法一双重循环 , 判断 B 中的每个元素是否在 A 中出现解法二一次遍历 因为是有序的序列 , 所以可以从两个序列的第一个元素开始比较 如果元素相等 , 下标同时往后 + 1 , 如果 A ...原创 2018-09-15 23:47:39 · 448 阅读 · 0 评论 -
重建二叉树
重建二叉树给定一个前序遍历序列和一个中序遍历序列构建一棵二叉树思路:前序的第一个节点一定是 根节点, 根据前序的第一个节点创建根节点找到根节点以后再根据根节点的值去中序序列中找根节点的位置根节点的左边就是左子树, 右边就是右子树然后递归构建左右子树/** * Definition for binary tree * struct TreeNode { * ...原创 2018-08-13 17:05:21 · 240 阅读 · 0 评论 -
leetcode-56 合并区间
合并区间给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].区间是一个结构体/** * Definition for an interval. * struct Inter...原创 2018-08-13 15:46:19 · 434 阅读 · 0 评论 -
岛屿问题
岛屿个数问题1 是陆地, 0 是水, 只考虑上下左右四个方向相邻例如:输入:11110110101100000000输出: 1思路: 遍历二维数组, 如果是 1, 就把它上下左右都感染为 2, 岛屿个数 +1遍历完成, 最后返回岛屿个数感染的时候可以用递归class Solution {public: int numIslands(vect...原创 2018-08-12 16:12:13 · 4373 阅读 · 0 评论 -
两个链表第一个公共节点
两个链表第一个公共节点方法一 :先让长的链表的指针先走长的之差的步数, 两个再一起走, 如果相遇就是第一个公共节点如果没交点, 就都走到空/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { ...原创 2018-08-02 11:45:11 · 236 阅读 · 0 评论 -
合并两个有序的链表
合并两个有序的链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 1. 递归版本根据上面的图得到 , 先创建一个新的结点 , 然后比较两个链表的第一个节点 , 哪个节点的值小 , 就作为新的头节点 /*struct ListNode { int val; struct ListNode *next; L...原创 2018-07-31 21:27:44 · 276 阅读 · 0 评论 -
青蛙跳台阶
青蛙跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解法一 : 每一个台阶都有两种选择 : 跳或者不跳 第一个台阶必须跳 , 所以只有 n - 1 个台阶需要选择 那么就是 2^(n - 1)class Solution {public: ...原创 2018-07-31 19:12:49 · 225 阅读 · 0 评论 -
不用加减乘除做加法
不用加减乘除做加法1. 利用自增自减class Solution {public: int Add(int num1, int num2) { if(num1 > 0) { while(num1--) { num2++; }...原创 2018-07-30 15:05:55 · 193 阅读 · 0 评论 -
LeetCode_103. Binary Tree Zigzag Level Order Traversal
LeetCode_103Binary Tree Zigzag Level Order Traversal给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如: 给定二叉树 [3,9,20,null,null,15,7] 返回锯齿形层次遍历如下: [ [3], [20,9], [15,...原创 2018-07-16 14:54:48 · 175 阅读 · 0 评论 -
二叉树最小深度&根据遍历结果构建二叉树
leetcode_01minimum-depth-of-binary-tree求二叉树的最小深度class Solution{public: int run(TreeNode *root) { if(root == NULL) { return 0; } if(root-&g...原创 2018-06-27 14:09:27 · 311 阅读 · 0 评论 -
剑指Offer_66_构建乘积数组
题目描述:给定一个数组 A[0, 1, 2, 3, ... , n-1] 请构建一个数组 B[0, 1, 2, 3, ... , n-1] 条件为 B[i] = A[0]*A[1]*A[2]*...*A[i-1]*A[i+1]*...*A[n-1] 限制: 不能使用除法 !也就是说 B[i] 等于 A 数组中除 A[i] 以外的其他所有元素之积思路1:先来举例分析一下 例如...原创 2018-06-07 17:45:08 · 267 阅读 · 0 评论 -
最长回文子串
最长的回文子串1. 暴力解法// 1. 暴力解法 // 时间复杂度 O(N^3)// 判断str[i...j]是否是回文串bool isPalindrome(const char *str, int begin, int end){ while (begin <= end) { if (str[begin] == str[end])...原创 2018-09-16 17:59:12 · 208 阅读 · 0 评论