
数据结构
文章平均质量分 90
Netfishless
获取更多学习资料请关注本人微信公众号:漏网小鱼
展开
-
《剑指offer》第五章 39-52
第五章 优化时间和空间效率 1. 时间效率 字符串多次拼接时,不要多次使用String的+来拼接字符串,这样会产生很多string临时实例。更好地是用append方法完成字符串拼接。s1.append(s2)把字符串s2拼接到s1后面。 查找:顺序查找需要O(n),排序数组需要O(logn),哈希表则是O(1)。 剑指 Offer 39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 输入: [1, 2,原创 2021-06-02 20:00:05 · 766 阅读 · 0 评论 -
《剑指offer》第四章 27-38
第四章 解决面试题的思路 1.画图让抽象问题形象化 剑指 Offer 27. 二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 &n原创 2021-05-28 19:08:06 · 429 阅读 · 0 评论 -
《剑指offer》第三章 16-26题解
第三章 高质量代码 1.代码的完整性 剑指 Offer 16. 数值的整数次方 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 输入:x = 2.00000, n = 10 输出:1024.00000 输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25 初始解法:x*x重复n-1次。但这种情况下没有考虑n为负数和零。 完整解法:应该对负数进行-操作,对于零应该抛出异常。原创 2021-05-24 11:12:46 · 637 阅读 · 0 评论 -
《剑指offer》第2章 03-15题解
第二章 面试需要的基础知识 1. 数组 剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 排序后扫描复杂度O(nlogn) 哈希表,空间复杂度O(n),时间复杂度O(n) 原地哈希:有的元素多次重复,有的元素确实,使用原地哈希原创 2021-05-20 16:22:37 · 810 阅读 · 0 评论 -
N皇后看回溯套路
这个讲回溯套路的不错 我起初的思路 以 4 皇后为例,我画出一个搜索树,初始时棋盘的格子都是"."。 每一行,选一个格子置为"Q",一行行往下选,第一行有四种选择。 在选下一行的皇后时,为了避免列的冲突,有三种选择。 继续选下去,构建完整解,可能会遇到对角线冲突。 遇到冲突,继续选下去没有意义,得不出合法的解。需要回溯。 回溯的套路 遍历枚举出所有可能的选择。 依次尝试这些选择:作出一种选择,并往下递归。 如果这个选择产生不出正确的解,要撤销这个选择(将当前的 “Q” 恢复为 “.”),回到之前的状态,原创 2021-03-13 11:37:20 · 335 阅读 · 0 评论 -
回溯算法
力扣题解中看到一个回溯算法讲的很清晰,记在这里。 「回溯算法」与「深度优先遍历」都有 不撞南墙不回头 的意思。我个人的理解是:「回溯算法」强调了「深度优先遍历」思想的用途,用一个 不断变化 的变量,在尝试各种可能的过程中,搜索需要的结果。强调了 回退 操作对于搜索的合理性。而「深度优先遍历」强调一种遍历的思想,与之对应的遍历思想是「广度优先遍历」。 与动态规划的区别 共同点 用于求解多阶段决策问题。多阶段决策问题即: 求解一个问题分为很多步骤(阶段); 每一个步骤(阶段)可以有多种选择。 不同点 动态规划只转载 2021-03-12 17:20:42 · 440 阅读 · 0 评论 -
递归问题套路
标题三道题套路解决递归问题 递归解题三部曲 何为递归?程序反复调用自身即是递归。 我自己在刚开始解决递归问题的时候,总是会去纠结这一层函数做了什么,它调用自身后的下一层函数又做了什么…然后就会觉得实现一个递归解法十分复杂,根本就无从下手。 相信很多初学者和我一样,这是一个思维误区,一定要走出来。既然递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可。 如上图所示,我们需要关心的主要是以下三点: 整个递归的终止条件。 一级递归需要做什么? 应该返回给上一原创 2020-10-14 18:28:58 · 353 阅读 · 0 评论 -
《大话数据结构》——3.1顺序表相关操作
最近开始学习《大话数据结构》这本书,准备把里面的范例用C++敲一敲,以备后续复习,目前还是很菜很菜,尽量把子函数写清楚,主函数可能就考虑的不是那么周到了。 #include <iostream> using namespace std; #include<vector> #include<algorithm> class myList { public: myList(int len);//初始化操作:构造函数 ~myList()//析构函数 { ...原创 2020-09-08 20:38:46 · 1554 阅读 · 2 评论