
通用:数据结构与算法
文章平均质量分 65
如题
丁大黄
Android开发
展开
-
【数据结构与算法】排序算法总结:冒泡 / 快排 / 直接插入 / 希尔 / 简单选择 / 堆排序 / 归并排序
内排序的交换排序类别。原创 2024-11-27 11:09:33 · 888 阅读 · 0 评论 -
【数据结构与算法】程序员MS金典 8.1-8.14
面试题 08.01. 三步问题class Solution {public: int waysToStep(int n) { vector<long> memo(n+1,-1);//当使用[]索引时,应该设置初始大小 if(n == 0){return 0;} if(n == 1){return 1;} if(n == 2){return 2;} if(n == 3){return 4;}原创 2021-07-22 20:00:51 · 177 阅读 · 0 评论 -
【数据结构与算法】最小堆实现优先队列
https://zhuanlan.zhihu.com/p/65051934最小堆堆排序的原理就是,通过维护一个最小堆来进行排序(和没说一样。最小堆在数据结构上是个完全二叉树,即除了叶子结点靠右的部分可能缺失以外,其他的地方都是满的。最小堆在结构上的特点是,所有的父结点都比子结点要小。这个特点天然的用于获取第Top-K小的数或者排序。例如找第三小的数,就是从最小堆里面取的第三个数。最小堆有两个重要的操作,这两个操作都是为了维护最小堆,即在某些结点不满足最小堆属性的时候将堆调节到符合最小堆的状态。Si原创 2021-07-22 19:50:02 · 377 阅读 · 0 评论 -
【C++】STL里的priority_queue用法总结
https://blog.csdn.net/xiaoquantouer/article/details/520159281、头文件#include<queue>2、定义priority_queue<int> p;3、优先输出大数据priority_queue<Type, Container, Functional>Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。如果不写后两个参数,那么容器默认用的是vec原创 2021-06-26 21:57:56 · 166 阅读 · 1 评论 -
【数据结构与算法】判断字符串是否是IP地址
判断原则:判断该字符长度是否是7-15位之间(0.0.0.0-255.255.255.255)是否能以小数点分成四段每段是否都是数字每段数字是否都在0-255之间只有以上四个条件都满足了,才是IP的正确格式。实现该算法有两种比较简单的方法,一种是常规判断,另一种是利用正则表达式进行判断,下面以函数的形式实现这两种方法,可以直接复制函数使用,传入的参数是待判断的字符串,返回的是布尔变量。常规判断://判断字符是否是IPpublic boolean isCorrectIp(原创 2020-11-02 14:04:31 · 409 阅读 · 0 评论 -
【数据结构与算法】LeetCode HOT 100(简单,22道)
1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。方法一:暴力法,双重循环class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int n = nums.size(); if(n<=0) return {}; for(int原创 2020-10-14 22:28:58 · 374 阅读 · 2 评论 -
【数据结构与算法】二分查找全家桶 C++
Leetcode 704 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。class Solution {public: int search(vector<int>& nums, int target) { int left = 0, right = nums.size()-1;// 在【left,right】范围里寻找ta原创 2020-09-12 22:28:36 · 237 阅读 · 0 评论 -
【数据结构与算法】程序员面试金典 5.1-5.8
面试题 05.01. 插入思路:例 N = 1011 1111, M = 101, i = 2, j = 4 (1<<(j-i+1))-1)<<i = 0001 1100 取反后 1110 0011对N于运算 1011 1111 & 1110 0011 = 1010 0011M左移动i位 101 << i = 0001 0100最后M|N 0001 0100 | 1010 0011 = 1011 0111原创 2020-07-19 22:52:21 · 175 阅读 · 0 评论 -
【数据结构与算法】程序员面试金典 4.1-4.12
面试题 04.01. 节点间通路原创 2020-07-19 13:17:49 · 278 阅读 · 0 评论 -
【数据结构与算法】程序员面试金典 3.1-3.6
面试题 03.01. 三合一原创 2020-07-16 22:07:43 · 258 阅读 · 0 评论 -
【数据结构与算法】程序员面试金典 2.1-2.8
面试题 02.01. 移除重复节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeDuplicateNodes(ListNode* head) {原创 2020-07-15 22:38:57 · 287 阅读 · 0 评论 -
【数据结构与算法】程序员面试金典 1.1-1.9
面试题 01.01. 判定字符是否唯一class Solution {public: bool isUnique(string astr) { // 方法一:使用set // set<char> setChar(astr.cbegin(),astr.cend()); // if(setChar.size() == astr.size()) // return true; // return fal原创 2020-07-14 19:54:42 · 1023 阅读 · 0 评论 -
【multimap在文件处理中显奇效】将文本文件的每行内容,按照行首6个数字的升序,重新排序
这是我编程生涯的一块里程碑,作为菜鸟小白,一直在底层仰望程序天空中自由翱翔的前辈们,这次自己起飞了一下下,认识到了数据结构的巨大魅力和无限潜力,感受到了编程带来的快乐!这里简单记录,以备后续使用。问题描述有一份文件,示例如下,前6个字符表示编号,编号应从0-8000左右,但由于某种原因(不重要啦),生成的顺序被打乱,但序号和该行的内容是匹配的。007453,-1,621,754,1109,927,0.9999844,-1,-1,-1007453,-1,646,330,1095,522,0.9999原创 2020-06-14 21:36:12 · 277 阅读 · 0 评论 -
【数据结构与算法】递归方法和回溯方法模板
递归和回溯的应用场景二叉树的遍历归并排序、快速排序动态规划二分搜索复杂度计算复杂度计算方法,需要等差数列、等比数列的知识。递归function fn(n){ //第一步:完整性检查,判断输入或者状态是否非法? if(input/state is invalid){ return; } //第二步:判断递归是否应当结束? if(match condition){ return some value; } //第三步:缩小问题规模,递归调用 result1 =原创 2020-06-13 16:18:07 · 196 阅读 · 0 评论 -
【数据结构与算法】深度优先和广度优先算法
1 深度优先搜索算法(DFS)1.1 DFS解决问题解决连通性的问题,即给定两个点,一个起始点(或起始状态),一个终点(或最终状态),判断是否有一条路径能从起点连接到终点。很多情况下,连通的路径有很多条,只需要找出一条即可,DFS只关心路径存在与否,不在乎其长短。1.2 DFS思想从起点出发,在规定的方向中,选择一个可选方向,不断向前走,直到无法继续为止;然后尝试另外一种方向,直到最后走到终点。1.3 代码实现(栈!应获得C位)递归实现:判断是否抵达了目的地B,是,则立即返回标记当前点原创 2020-06-13 16:17:32 · 854 阅读 · 0 评论 -
【数据结构与算法】小白的算法学习之路
1 关于数据结构与算法1.1 个人感悟作为非计算机专业,LZ一直未系统地学习过数据结构与算法,只是在认识中知道这俩都是很厉害的东西,平时编程以解决问题为主,不会了就百度、Google,一旦侥幸解决就开心不已,觉得自己受到了鼓励,殊不知,那些都是在浮沙上筑高台,危险的很。这种状态直到前段时间才有改变。帮师弟解决了一个文件中字符串排序的问题,使用了一直早有耳闻的multimap,将一个本来需要将近1h才能出结果的程序优化成1s不到出结果,着实在精神上感到了振奋,也认识到了数据结构和算法的巨大威力和无穷魅力原创 2020-06-13 16:15:27 · 253 阅读 · 0 评论 -
【数据结构与算法】《剑指offer》学习笔记----第七章 俩案例(含67-68题)
第七章 两个典型案例面试题67. 把字符串转换成整数写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们原创 2020-06-13 16:12:39 · 221 阅读 · 0 评论 -
【数据结构与算法】《剑指offer》学习笔记----第六章 各项能力(含53-66题)
第六章 各项能力总结:扎实的编程能力,沟通能力,学习能力,知识迁移能力,抽象建模能力,发散思维能力。面试题53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0 限制:0 <= 数组长度 <= 50000class Solution {public:原创 2020-06-13 16:12:08 · 405 阅读 · 0 评论 -
【数据结构与算法】《剑指offer》学习笔记----第五章 优化时间和空间效率(含39-52题)
第五章 优化时间和空间效率本章核心内容和思想,就是降低时间复杂度:(1)改用更加高效的算法。如39、40、42题(2)用空间换时间。用数组实现简单哈希表在O(1)时间内知道任意字符出现的次数;创建一个缓存保存中间的计算结果避免重复计算;用递归思路求解问题的时候,如果有重复的子问题,也可以通过保存求解子问题的结果来避免重复计算。相关例题如10、49、50题(3)嵌入式开发,不宜过度牺牲空间换时间。以下是具体内容:面试题39. 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一原创 2020-06-13 16:11:38 · 317 阅读 · 0 评论 -
【数据结构与算法】《剑指offer》学习笔记----第四章 解决问题的思路(含27-38题)
第四章 解决问题的思路面试题27. 二叉树的镜像请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1 示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1] 限制:0 <= 节点个数 <= 1000/*原创 2020-06-13 16:11:02 · 304 阅读 · 0 评论 -
【数据结构与算法】《剑指offer》学习笔记----第三章 高质量的代码(含16-26题)
第3章 高质量的代码从3个方面保证代码的完整性:测试内容要求功能测试完成常规的功能要求边界测试考虑各种边界值,如循环终止条件,递归终止条件负面测试考虑各种可能的错误输入,不合法输入的处理有3中错误处理方法:方法优点缺点返回值和系统API一致不能方便地使用计算结果全局变量能方便地使用计算结果用户可能会忘记检查全局变量异常可以为不同错误原因定义不同的异常类型,逻辑清晰有些语言不支持异常,抛出异常时对性能有负面影响原创 2020-06-13 16:10:29 · 213 阅读 · 0 评论 -
【数据结构与算法】《剑指offer》学习笔记----第一章、第二章 基础知识(含1-15题)
学习概要数据结构数组字符串链表(高频)树(尤其二叉树)栈(与递归调用密切相关)队列(图包括树的层序遍历中用到)算法查找(二分查找)排序(快速排序、归并排序)回溯法(解决迷宫类似问题)动态规划(求最优解)贪婪算法(动态规划过程中每一步都存在一个可能的最优解的选择时可以尝试贪婪算法)循环和递归的不同实现位运算正文开始:1 编程语言1 sizeof定义一个空类型(不包含任何成员变量和成员函数)—> sizeof值为1,而非0,因为我们生命该类型的实例的时候必须在内存中占原创 2020-06-13 16:09:50 · 1333 阅读 · 0 评论