
Algorithm
文章平均质量分 74
doctoroyy
这个作者很懒,什么都没留下…
展开
-
图论:图的环路检测和取环
图论:有向图的环路检测和取环图的相关概念顶点边(有向、无向)度(入度、出度)一个顶点如果有一条边指向它,那我们就说这个顶点的入度为1 ;类似地,从顶点出发,有一条边我们就说这个顶点的出度为 1图的表示邻接矩阵假设有 n 个顶点 m 条边的图,声明一个 m * n 的二维数组,G[i][j] = 1 表示 i → j 是连通的但存在几个问题:遍历元素时,存在的边和不存在的边都不得不检查一遍,导致遍历效率低。不能存储重复的边。当顶点数量多时,内存空间开销会很大。空间利用率不高。存原创 2021-09-30 13:10:51 · 10339 阅读 · 0 评论 -
【LeetCode】3.无重复字符的最长子串(滑动窗口)
Given a strings, find the length of thelongest substringwithout repeating characters.Example 1:Input: s = "abcabcbb"Output: 3Explanation: The answer is "abc", with the length of 3.Example 2:Input: s = "bbbbb"Output: 1Explanation: The ans...原创 2021-06-14 23:05:07 · 406 阅读 · 3 评论 -
二进制1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。可能引起死循环的解法:class Solution {public: int NumberOf1(int n) { int cnt = 0; while (n) { if (n & 1) cnt++; n >>= 1; } retu...原创 2020-01-12 13:54:34 · 146 阅读 · 0 评论 -
2017年第八届真题 小数第n位
题目描述我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。输入一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1000000000)输出一行3位数字,表示:a除以b,小...原创 2020-01-10 18:43:49 · 215 阅读 · 0 评论 -
【剑指offer】替换空格
替换空格题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。分析:首先考虑从前往后替换空格的情况:每移动一个空格就需要把后面的所有字符移动三位,这样做的时间复杂度是O(n^2);能不能换个思路,从后往前替换?我们可以事先计算出所有空格替换后的字符串长度,每替换一个字...原创 2020-01-07 23:09:39 · 130 阅读 · 0 评论 -
【算法】寻找最大k个数
如何在一个无序的数组中寻找最大的k个数?对于这个问题, 最容易想到的办法就是给数组排个序, 如果使用快速排序,时间复杂度是O(nlogn), 但事实上我们只需要寻找这k个数,排序的方法显然做了多余的事情。那么,能不能在这个基础上优化一下呢?基于快速排序的优化 O(klogn)我们知道,快速排序的思想是:在数组中选中一个支点,以这个支点将数组划分成两部分s1, s2,保证s1所有元素小于支点...原创 2019-12-23 01:02:16 · 469 阅读 · 0 评论 -
【LeetCode】5.最长回文子串 Longest Palindromic Substring
5. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: "babad"Output: "bab"Note:...原创 2019-12-01 23:42:14 · 172 阅读 · 0 评论 -
【前端】可视化之快速排序
在线体验设计思路1. 排序算法部分快速排序的思想就是在序列中选择一个支点pivot, 让小于pivot的元素放在它的左边,不小于(说大于的话不准确)它的元素放在它的右边。visualgo.net 的实现,维护三个序列,s1, s2, unknowns1中存放小于的元素,s2中存放不小于支点的元素,unknown是未排序序列(具体的区分在动画中很清楚)function partiti...原创 2019-11-01 00:16:42 · 402 阅读 · 0 评论 -
【前端】可视化之冒泡排序
实现思路使用js移动元素位置,利用css的transition属性实现过渡动画。在线体验创建一个数组arr,数组的每一项保存着节点元素的文本值(innerText)和元素在节点列表中的索引nodeIndex, 因为接下来的并不是真的交换两个节点,而是交换两个节点的位置(可能有点不好理解)。function init() { let fragment = document.create...原创 2019-10-25 17:03:52 · 375 阅读 · 0 评论 -
【算法】八皇后问题
八皇后问题是一个经典的问题:在一个8*8的国际象棋盘中,摆放8个皇后,使得任意两个皇后不能互相伤害。这就要求任意两个皇后不能在同一行、同一列、同一对角线。这个问题可以使用深搜来解决:一行一行找能摆放的位置,board[i][j] = 1 表示在(i, j)这个位置摆放了皇后//// Created by xiaoyu on 2019/10/6.//#include <ios...原创 2019-10-07 23:43:29 · 457 阅读 · 0 评论 -
【搜索】求联通块个数的几种解法(深搜、并查集)
解法一:深搜//// Created by xiaoyu on 2019/9/27.//#include <iostream>using namespace std;const int n = 3, m = 5;int dir[4][2] = {{-1, 0},{1, 0}, {0, 1}, {0, -1}};int vis[n + 1][m + 1];int m...原创 2019-09-27 12:32:21 · 971 阅读 · 0 评论 -
【图论】最短路之Floyd算法
Floyd算法主要用来解决多源最短路径(任意两点间的最短路径)问题,本身基于动态规划,时间复杂度为O(n^3)。假设两个点i,j,那么从i到j路径最短只有两种情况:从i直接到j 从i出发经过某一个或某几个中间节点到达j 假设有n个点,dis[i][j]表示i到j的最短距离,任意两点间的距离初始化为无穷大 for (int i = 1; i <= n; i++) { ...原创 2019-08-18 23:25:07 · 242 阅读 · 0 评论 -
【LeetCode】19. 删除链表的倒数第 N 个结点
Given a linked list, remove then-th node from the end of list and return its head.Example:Given linked list: 1->2->3->4->5, and n = 2.After removing the second node from the end, t...原创 2019-07-22 23:49:21 · 140 阅读 · 0 评论 -
【排序】归并排序
没想到面试的时候还是被问到了,当时连归并的大致流程都说不出来,实在是觉得很尴尬,今天重新学一下,附上理解并实现的代码。归并排序的思想就是分而治之,递归地把一个序列一分为二,每次将上一步得到的有序子序列合并到一起。演示过程#include<iostream>#include<algorithm>#include<cstdlib>#...原创 2019-07-19 23:57:21 · 114 阅读 · 0 评论