每日一算
恪愚
江湖人称“云小梦”。一个大前端路上还未“毕业”的“小学生”。爱好分享、执着探索、乐于开源;曾参与过中大型微信小程序项目前端开发,并主导过一些官网(原生)开发;着迷于vue、node、css以及原生js技术。热衷研究现有技术的成型创新应用。目前对前端可视化和webRTC、web安全有浓厚的兴趣。开源且目前维护的有:微信小程序扩展组件库—— https://github.com/1314mxc/yunUI ,欢迎star!
展开
-
经典算法问题:八皇后的Python解法
想了想,没啥说的,代码不算难,涉及到的知识点本文都有说明:#八皇后问题board=[ [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0...原创 2019-12-12 12:15:14 · 943 阅读 · 2 评论 -
三分钟搞懂一道算法题:杨辉三角的扩展问题
浅谈“杨辉三角”杨辉三角应该是大家很早就接触到的一个数学知识,它不仅是高中数学的难题,更是刚接触“递归”的人必做的一道算法题。它有很多有趣的性质:每个数字等于上一行的左右两个数字之和,即 C(n+1,i) = C(n,i) + C(n,i-1)每行数字左右对称,由 1 开始逐渐变大第 n 行的数字有 n 项第 n 行的第 m 个数和第 n - m + 1 个数相等 ,为组合数性质之一...原创 2019-05-09 13:57:30 · 1386 阅读 · 0 评论 -
巧解“博弈”型算法题:分糖果问题
问题导入【题目:】 给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的...原创 2019-05-09 20:27:10 · 2363 阅读 · 0 评论 -
每日一算: 在时间复杂度O(1)下删除单链表中节点
背景今天做到一道题:设一个有序的单链表中有n个节点,现要求插入一个新节点后是的单链表仍保持有序,则该操作的时间为:。答案是:O(n)为什么?因为它是链表!链表的增删改功能,一定依托于其“low的一批”的“ 遍历 ”,这是链表的核心。插入一个数据,就要遍历一遍,有n个节点,时间复杂度就是O(n)。冰火两重天:时空复杂度O()这一部分我自认为没有能力讲解清楚,相比自己,我更想为大家推荐一...原创 2019-05-27 13:22:22 · 3348 阅读 · 0 评论 -
“面试中的算法”之“大整数相加”
题目给出两个很大的整数,如何求出他们的和?解读:题目很简单,但是内涵不太好说,很大,,,我们就直接考虑那种“连long类型都装不下的整数”的情况了。回想一下,我们读小学的时候,老师教我们加法运算,要“ 列竖式 ”:4 3 2 5 4 6 4 9 3 4 1 2 4————————5 2 5 9 5 8 8那么,我们为什么要列竖式呢?——对于这么大的数,显然我们无法一步...原创 2019-06-13 08:32:28 · 481 阅读 · 0 评论 -
算法面试题:如何判断链表有环
题目有一个单向链表,链中可能有“环”,如何用程序判断呢?方法1(最低效)最常想到的是:首先从头结点开始遍历整个链表,每遍历一个,就和之前遍历过的比较,,,这相当于每次遍历了两遍,无疑是扩大了链表“ 遍历 ”带来的劣势,其时间复杂度为O(n^2),由于没有额外的存储空间,故空间复杂度为O(1)。这也太低效了吧。方法2(次之)首先创建一个以节点ID为key的hashSet集合,用来存储曾...原创 2019-06-11 12:39:12 · 583 阅读 · 0 评论 -
趣谈“面试算法”:一行代码能干啥?
追随小吴:快放假了,就不搞那么难的东西,来点有趣的。。。(虽然好多天没有更新博客了)2的幂题目来源于 LeetCode 上第 231 号问题:2 的幂。题目难度为 Easy。题目: 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。题目解析:这个简直可以说是“ 二进制 ”与“ 位运算 ”中的经典问题!如果一个数是 2 的次方数的话,那么它的二进数必然是最高位为1,其它都为 0 ,...原创 2020-03-26 11:48:05 · 588 阅读 · 6 评论 -
深层次算法(面试)题——滑动窗口
科普·前言——什么是滑动窗口算法滑动问题包含一个滑动窗口,它是一个运行在一个大数组上的子列表,该数组是一个底层元素集合。假设有数组 [a b c d e f g h ],一个大小为 3 的 滑动窗口 在其上滑动,则有:[a b c][b c d][c d e][d e f][e f g][f g h]一般情况下就是使用这个窗口在数组的 合法区间 内进行滑动,同时 动态地 记录一些...原创 2019-06-23 09:03:49 · 1107 阅读 · 0 评论 -
这是一篇算法思维:斐波那契的黄金分割情怀
今天写网站时突然感觉到,算法思维好像要比算法过程重要的多。。。借此来谈谈某室友突然谈到的“黄金分割问题”斐波那契数列中的黄金分割斐波那契数列因古希腊建筑《伯特农神殿》上出现的“黄金分割”而闻名,其中有许多有趣的数学特性。斐波那契数列由两个 1 开端,其后的每一位数字都是前两位数字之和。譬如 1 和 1 的和为 2,1 和 2 的和为 3,2 和 3 的和为 5,3 和 5 的和为 8……一...原创 2019-03-15 13:30:28 · 499 阅读 · 0 评论 -
链表与指针:专治“疑难杂症”
本文大概解决三个问题,实话说,链表这些问题真是刷新了以前我对链表的“偏见”。输出单链表倒数第 K 个节点题目:输入一个单链表,输出此链表中的倒数第 K 个节点。(去除头结点,节点计数从 1 开始)。两次遍历法/*计算链表长度*/int listLength(ListNode* pHead){ int count = 0; ListNode* pCur = pHead-&g...原创 2019-03-04 09:12:37 · 897 阅读 · 0 评论 -
算法详解---骑士走棋盘
骑士走棋盘问题与八皇后(同样献给寒假还在肝题的老哥们。。。)感觉这两道题在解释一件事,八皇后可以用dfs(深搜),也可以用广搜,而骑士走棋盘问题给我的感受就是在解释广搜算法的步骤。。。建议看完本篇所讲题目再去看看八皇后,可能会有所受益。骑士走棋盘问题中,骑士的走法为国际象棋的走法,类似中国象棋的马,骑士可以由任意一个位置出发,求如何不重复的走完所有位置。问题解法:骑士的走法,基本上可以...原创 2019-01-21 02:11:20 · 2068 阅读 · 0 评论 -
每日一算---对数组的操作
移动数组中的0今日重新拿起电脑,看到阔别已久的LC,不觉兴奋,拿其283号问题说一说吧。题目到简单:定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。思来想去,觉得这一题可以有至少两种写法,分享一下:这一题要想简单,就要用c++中的标准函数库(STL),其中有一个头文件叫algorithm,神奇!这个头文件下包含着诸如:nums.size(); ...原创 2019-01-25 21:47:04 · 379 阅读 · 0 评论 -
每日一算:链表操作
删除链表中倒数第N个元素终于过渡到链表了。。。(感慨一下)你是否还在坚持学?近日,LC上某题引起了我的关注。题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。...原创 2019-01-30 19:07:30 · 288 阅读 · 0 评论 -
每日一算--大数相加
两数之和大家一定或多或少接触过一道题:大数相加,这道题我见过的大多数解法都是用数组,由于数组在空间上的缺陷性,造成了篇幅上的累赘,也让很多人望而却步。话说,没有绝对好的方法,就像没有绝对的第一一样,在这道题中,换用链表貌似是个不错的选择。(我收回数组才是万能的这句话。。。)下面直接上java中的代码,没学的同学可以先看看,想想思路,待以后学到时再拐回来看。思路:给定两个非空链表来表示两个...原创 2019-01-17 20:11:12 · 382 阅读 · 0 评论