摘要: 面试题35. 复杂链表的复制 1 class Solution { 2 public: 3 Node* copyRandomList(Node* head) 4 { 5 if (head == NULL) 6 { 7 return head; 8 } 9 Node *cur = head; 10 N 阅读全文
posted @ 2020-05-19 10:58 Ternence_zq 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 面试题27. 二叉树的镜像 解题思路:大多数二叉树都可用递归实现。 递归的内部实现就是栈,所以可以用栈代替递归实现。 递归注意结束条件。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 阅读全文
posted @ 2020-04-23 09:56 Ternence_zq 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 面试题55 - I. 二叉树的深度 解题思路:通过层次遍历,将每一层只算一次,进行while循环弹出该层所有数据,在进行下一层入队列。 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 阅读全文
posted @ 2020-04-22 09:56 Ternence_zq 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 面试题63. 股票的最大利润 动态规划解析: 1 class Solution { 2 public: 3 int maxProfit(vector<int>& prices) 4 { 5 if (prices.size() < 2) 6 { 7 return 0; 8 } 9 int cout = 阅读全文
posted @ 2020-04-10 10:33 Ternence_zq 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 面试题42. 连续子数组的最大和 题目要求: 解题思路: 1. 定义子问题: dp[i] 为下标以 num[i] 结尾的数组字段 元素最大最短和,i表示子段到当前i位置 i; 2. 寻找关系式: 只有一个元素:dp[0] = num[0]; 两个元素:dp[i] 为num[0], num[1], n 阅读全文
posted @ 2020-04-06 10:30 Ternence_zq 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 198. 打家劫舍 题目要求: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷 阅读全文
posted @ 2020-03-31 10:54 Ternence_zq 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 72. 编辑距离 题目要求: 解题思路: 根据动态规划的步骤: 1. 定义数组元素的含义,这里用到两个字符串,所以应该定义二维数组; 由于我们求的是字符串1转换成字符串2所需要的最少次数:当字符串1的长度为i,字符串2的长度为j,则字符串1转换成字符串2所需次数为dp[i][j]; 2. 找出关系数 阅读全文
posted @ 2020-03-26 11:29 Ternence_zq 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 62. 不同路径 题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 解题思路1: 动态规划的三个步骤: 1. 定义数组元 阅读全文
posted @ 2020-03-23 22:44 Ternence_zq 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 面试题40. 最小的k个数 问题描述: 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 解题思路: 这题不要直接使用 sort(arr.begin(), arr.end() ) 函数; 时间复杂度:O(n\lo 阅读全文
posted @ 2020-03-20 12:02 Ternence_zq 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 开始思路想的是两个数组有序,通过两个数组相互对比,那么把寻找第k小的数转换成选择最小数,找到之后跳过,然后循环k次,这样必须循环k次,而且每次还要对比,时间复杂度太高。 优化之后,解题思路与下面这个很类似。 递归训练1:在两个长度相等的排序数组中找到上中位数 每次寻找时,将两个数组mid 阅读全文
posted @ 2020-03-20 11:05 Ternence_zq 阅读(275) 评论(0) 推荐(0) 编辑