3 Gl-Young

尚未进行身份认证

我要认证

只要方向是对的,即使像乌龟那样慢慢爬也不错。 焦虑的时代,愿你有一颗不浮躁的心。

等级
TA的排名 6k+

数据结构与算法之“分治算法”

2020-6-28卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭。北岛 – 《回答》一、概述分治算法(divide and conquer)的核心思想其实就是四个字,分而治之 ,也就是将原问题划分成 n 个规模较小,并且结构与原问题相似的子问题,递归地解决这些子问题,然后再合并其结果,就得到原问题的解。这个定义看起来有点类似递归的定义。关于分治和递归的区别,分治算法是一种处理问题的思想,递归是一种编程技巧。实际上,分治算法一般都比较适合用递归来实现。分治算法的递归实现中,每一层递归都会涉及这.

2020-06-28 23:42:12

数据结构与算法之“贪心算法”

2020-6-27有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人天不负,卧薪尝胆,三千越甲可吞吴。一、概述贪心算法,由名称就知道,每一步的决策都选择当前最优的方案(每一步的贪心),期望最后达成的结果是全局最优的方案。所以,贪心算法适于求解的场景:局部最优的累计会达到全局最优。贪心算法的最难的一块是如何将要解决的问题抽象成贪心算法模型,只要这一步搞定之后,贪心算法的编码一般都很简单。贪心算法有很多经典的应用,比如霍夫曼编码(Huffman Coding)、Prim 和 Kruskal 最小生.

2020-06-27 16:12:01

数据结构与算法之“二分查找”

**2020-6-26 **人类唯一能从历史中吸取的教训就是,人类从来都不会从历史中吸取教训。德国哲学家 – 黑格尔一、概述二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,很多非计算机专业的同学很容易就能理解,但是看似越简单的东西往往越难掌握好,想要灵活应用就更加困难。二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。二分查找是一种非常.

2020-06-26 16:59:18

数据结构与算法之 “排序”

一、概述排序算法中最经典的、最常用的:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。1.1、如何分析一个“排序算法”?学习排序算法,除了学习它的算法原理、代码实现之外,更重要的是要学会如何评价、分析一个排序算法。下面是衡量的几个方面。排序算法的执行效率最好情况、最坏情况、平均情况时间复杂度在分析排序算法的时间复杂度时,要分别给出最好情况、最坏情况、平均情况下的时间复杂度。除此之外,还要说出最好、最坏时间复杂度对应的要排序的原始数据是什么样的。为什么要区分这

2020-06-17 20:31:44

数据结构与算法之“递归”

2020-6-16十步杀一人,千里不留行。事了拂衣去,深藏身与名。李白 – 《侠客行 》一、概述递归,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。也就是说,递归算法是一种直接或者间接调用自身函数或者方法的算法。递归是一种应用非常广泛的算法(或者编程技巧)。很多数据结构和算法的编码实现都要用到递归,比如 DFS 深度优先搜索、前中后序二叉树遍历等等。去的过程叫“递”,回来的过程叫“归”。基本上,所有的递归问题都可以用递推公式来表示。诸如f(n)=f(n-1)+1 其.

2020-06-16 22:56:41

数据结构与算法之队列

**2020-6-14 **重剑无锋,大巧不工。金庸 --《神雕侠侣》一、概述先进者先出,这就是典型的“队列”。队列跟栈非常相似,支持的操作也很有限,也是一种操作受限的线性表数据结构。最基本的操作也是两个:入队 enqueue()放一个数据到队列尾部;出队 dequeue()从队列头部取一个元素。二、队列的实现跟栈一样,队列可以用数组来实现,也可以用链表来实现。用数组实现的栈叫作顺序栈,用链表实现的栈叫作链式栈。同样,用数组实现的队列叫作顺序队列,用链表实现的队列叫作链式.

2020-06-14 09:48:32

leetcode刷刷题(52) ---- 有效的括号(C语言版)

2020-6-11一生中总会遇到这样的时候,你的内心已经兵荒马乱天翻地覆了,可是在别人看来你只是比平时沉默了一点,没人会觉得奇怪。这种战争,注定单枪匹马。– 白岩松题目:leetcode – 20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2

2020-06-13 23:35:20

数据结构与算法之栈

2020-6-13吾生也有涯而知也无涯,以有涯随无涯,殆矣。– 庄周《庄子·内篇·养生主》一、概述后进者先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。但这种受限,也控制了出错的概率。当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,我们就应该首选“栈”这种数据结构。二、栈的实现从栈的定义看,栈主要包含两个操作,入栈和出栈,也就是在栈顶插入一个数据和从栈顶删除一个数据。如何用代码.

2020-06-13 21:36:52

数据结构与算法之链表

**2020-6-13 **从来如此,便对吗?– 鲁迅《狂人日记》一、概述链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域(对于双向链表也会存储上一个节点的地址域)。常见的三种链表结构:单链表双向链表循环链表双向循环链表二、链表的结构形式分析2.1、单链表链表.

2020-06-13 10:52:30

数据结构与算法之数组

**2020-6-12 **黑夜给了我黑色的眼睛,我却用它寻找光明 。诗人顾城 --《一代人》一、概括数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。理解数组的几个关键点线性表(Linear List)线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简.

2020-06-12 23:57:13

算法的复杂度分析

- 2020-6-11每一个不曾起舞的日子,都是对生命的辜负。——尼采一、概要数据结构和算法本身解决的是“快”和“省”的问题,也就是如何更省、更快地存储和处理数据的问题,因此,就需要一个考量效率和资源消耗的方法,那就是复杂度分析方法。复杂度分析分为时间复杂度和空间复杂度。为啥需要复杂度分析方法?代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用的内存大小的方法称为事后统计法。但是其有几个弊端:测试结果非常依赖测试环境(比如使用的硬件设备的性能不同)。测试结果受数据规模的影响

2020-06-11 23:57:03

leetcode刷刷题(51) ---- 重新排列数组(C语言版)

2020-6-11从前书信很慢,车马很远,一生只够爱一个人。——木心 《从前慢》题目:leetcode – 1470. 重新排列数组给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。 示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7] 解释:由于 x1=2,

2020-06-10 23:19:32

leetcode刷刷题(50) ---- 统计位数为偶数的数字(C语言版)

2020-6-10"Those whom God wishes to destroy, he first makes mad."------ Euripides“神欲使之灭亡,必先使 之疯狂。”– 希腊悲剧作家 – 欧底庇德斯题目:leetcode – 1295. 统计位数为偶数的数字给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数) 34

2020-06-09 23:00:47

leetcode刷刷题(49) ---- 整数的各位积和之差(C语言版)

2020-6-8道生一,一生二,二生三,三生万物老子 – 《道德经》题目:leetcode – 1281. 整数的各位积和之差给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例 1:输入:n = 234输出:15 解释:各位数之积 = 2 * 3 * 4 = 24 各位数之和 = 2 + 3 + 4 = 9 结果 = 24 - 9 = 15示例 2:输入:n = 4421输出:21解释: 各位数之积 = 4 * 4 *

2020-06-08 23:31:16

leetcode刷刷题(48) ---- 将数字变成 0 的操作次数(C语言版)

2020-6-8天地不仁,以万物为刍狗。老子 --《道德经》题目:leetcode – 1342. 将数字变成 0 的操作次数给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。示例 1:输入:num = 14输出:6解释:步骤 1) 14 是偶数,除以 2 得到 7 。步骤 2) 7 是奇数,减 1 得到 6 。步骤 3) 6 是偶数,除以 2 得到 3 。步骤 4) 3 是奇数,减 1 得到

2020-06-07 22:21:15

leetcode刷刷题(47) ---- 拥有最多糖果的孩子(C语言版)

2020-6-7If 10% of the profits,capital will ensure being used everywhere;20% of the profits,capital can active;50% of the profits,capital will rush into danger。for 100% of the profits,capital would dare to trample all human laws;there are more than 30

2020-06-07 10:26:50

windows下,使用vscode编译运行和调试C

2020-6-6为天地立心,为生民立命,为往圣继绝学,为万世开太平。– 北宋著名学者-张载一、准备本文完全是参考大佬文章《windows 10上使用vscode编译运行和调试C/C++》,文章写得巨详细,建议直接按照该文章配置即可。下面的内容只是个人的笔记,肯定没有大佬的专业和详细。安装好 VScode。安装编译器工具mingw-w64(VSCode只是编辑器,需要额外的编译器才能编译和调试)。安装及配置环境变量的教程请看:https://www.cnblogs.com/TAMING/p

2020-06-07 00:25:29

leetcode刷刷题(46) ---- 左旋转字符串(C语言版)

2020-6-6愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。此后如竟没有炬火:我便是唯一的光。倘若有了炬火,出了太阳,我们自然心悦诚服的消失。不但毫无不平,而且还要随喜赞美这炬火或太阳;因为他照了人类,连我都在内。– 鲁迅 《热风·随感录四十一》题目:leetcode – 面试题58 - II. 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾

2020-06-06 20:26:41

leetcode刷刷题(45) ---- 无重复字符的最长子串(C语言版)

2020-6-5科技是枪,也是玫瑰。有时人们持枪远征,荒废了玫瑰园;有时人们沉迷园艺,家园却被铁蹄踏平。而在那些伟大的故事里,人们手握钢枪,身后鲜花盛开。题目:leetcode – 3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是

2020-06-06 17:34:07

leetcode刷刷题(44) ---- 除自身以外数组的乘积(C语言版)

2020-6-4I once heard that the evil spirits who lived in Rashomon fled for fear of the cruelty of human nature.我曾听说住罗生门的恶鬼,因害怕人性的残忍而逃走。 —芥川龙之介 《罗生门》题目:leetcode – 238. 除自身以外数组的乘积给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums

2020-06-04 23:47:29

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。