//暴力法 时间复杂度 O(m * n) //根据排序的规律观察,得到类似2叉搜索树的解法 O(m + n) class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { //判空 if(matri ...
分类:
编程语言 时间:
2020-12-17 12:41:42
阅读次数:
1
前言众所周知,《剑指offer》是一本“好书”。为什么这么说?因为在技术面试中,它里面罗列的算法题在面试中出现的频率是非常非常高的。有多高,以我目前不多的面试来看,在所有遇到的面试算法题中,出现原题的概率大概能有6成,如果把基于原题的变种题目算上,那么这个出现概率能到达9成,10题中9题见过。至于为什么给“好书”这两个字打引号,因为这本书成了面试官的必备,如果考生不会这本书上的题目,就很可能得到面
分类:
编程语言 时间:
2020-12-11 12:38:12
阅读次数:
26
前言众所周知,对于面试而言,《剑指offer》是一本“好书”。如果你和我一样是个算法菜鸡,那么最推荐的是先把剑指offer的题目搞明白,其次再去刷LeetCode等习题,这样对于面试突击非常有用,因为面试官最常考的算法题都在这本书里。如果你发现看这本书很吃力,可以先直接参考些网上的代码,照着抄一遍,理解下算法题是应该解题,多抄几道题目,你就对算法题的做法有感觉了,这个高考做固定套路数学题是一样的。
分类:
编程语言 时间:
2020-12-11 11:50:10
阅读次数:
13
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 ? 节点个数 ? 5000 1、双指针 /** * Definition for singly-linked ...
分类:
其他好文 时间:
2020-12-03 11:44:21
阅读次数:
3
简单动态规划:dp[i]是以位置i结束的最大和,动态转移方程dp[i] = max(dp[i-1]+array[i], array[i]),dp中的最大值即是结果。 class Solution { public: int FindGreatestSumOfSubArray(vector<int> ...
分类:
编程语言 时间:
2020-11-21 11:46:10
阅读次数:
5
思路 方法一:暴力法 遍历每一个数nums[i],之后在[i, i+k]中顺序寻找最大值。 时间复杂度:O(k*n) 1 class Solution { 2 public: 3 vector<int> maxSlidingWindow(vector<int>& nums, int k) { 4 i ...
分类:
其他好文 时间:
2020-11-19 12:32:53
阅读次数:
6
思路 方法一:二分 遍历每个数字num,然后再在后面的数字中使用二分查找target-num。 复杂度分析 时间复杂度:O(nlogn) 空间复杂度:O(1) 1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, i ...
分类:
其他好文 时间:
2020-11-19 12:17:07
阅读次数:
4
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: ? 3 ? / ? 9 20 ? / ...
分类:
其他好文 时间:
2020-11-16 14:00:02
阅读次数:
13
思路 方法一:二分法之一 (类似暴力) (1) 用二分法找到第一个target所在的位置 (2) 之后在此位置前后顺序查找依次计数target的出现次数 复杂度分析 时间复杂度:最坏情况下O(n) 空间复杂度:O(1) ...
分类:
编程语言 时间:
2020-11-16 13:13:01
阅读次数:
7
思路 比较明显的动态规划问题。状态转移方程为:f(x, y) = grid(x,y) + max {f(x-1,y), f(x, y-1)} 。 优化:这里不使用额外的数组f,而就地更改grid数组,可以将空间复杂度降为O(1)。 1 class Solution { 2 public: 3 int ...
分类:
其他好文 时间:
2020-11-13 13:08:20
阅读次数:
7