Algorithm
文章平均质量分 77
sesiria
这个作者很懒,什么都没留下…
展开
-
动态规划-背包问题
背包问题是一种组合优化的NP完全问题。有N个物品和容量为W的背包,每个物品都有自己的体积w和价值v,求拿哪些物品可以使得背包所装下的物品的总价值最大。如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题;如果不限定wu'pi...原创 2021-06-17 08:51:41 · 2382 阅读 · 3 评论 -
链表,堆栈与队列
一,链表定义:struct link_node { int value; struct link_node * next;};1. 判断链表是否有没有环使用两个快慢指针慢指针往后面以动一个节点快指针每次移动两个节点// check whether the link list is a ring// 1 for true, and 0 for false.int isRing(struct link_node* head) { if (head ==原创 2021-04-11 17:43:25 · 413 阅读 · 0 评论 -
排序与查找算法
一,排序其中最基本的三种排序是冒泡,选择与插入。其平均复杂度为O(n^2). 但是其中选择排序在数据有序的情况or数据量小的情况下效率很高。虽然简单也是应该掌握的排序。比如C++的STL库中的sort模板函数,在数据量较小的情况下使用的是插入排序,在数据量较大使用快速排序等。1)冒泡最简单的排序方法。思路如下 时间复杂度O(N^2) 空间复杂度O(1)1)从左往右扫描两两比较数据,如果发现左边的数大于右边的数则交换。第一轮扫描以后,最右边的数一定为序列中最大的数2)第二轮开始扫描原创 2021-04-11 12:20:35 · 684 阅读 · 0 评论 -
Disjoint Union Set 并查集
Equations are given in the format A / B = k, where A and B are variables represented as strings, and k is a real number (floating point number). Given some queries, return the answers. If the answer d...原创 2019-12-11 14:28:43 · 372 阅读 · 0 评论 -
Algorithm: Maximum Flow Problem
reference 【Introduction to Algorithm Chapter 26】Problem SettingWe wish to compute the greatest rate at which we can ship material from the source to the sink without violating any capacity constra...原创 2021-04-05 22:53:21 · 548 阅读 · 0 评论 -
Algorithm PageRank with eigenvalues and eigenvector
A python implementation with dampling factor for PageRank algorithm.# PACKAGE# Here are the imports again, just in case you need them.# There is no need to edit or submit this cell.import numpy ...原创 2019-08-25 11:56:47 · 539 阅读 · 0 评论 -
Algorithm :Gaussian Elimination for Matrix
最近在review linear Algebra, 高斯消元法来求梯形矩阵感觉很有用。就自己写了一个代码,实现如下:by python:# by sesiria 2019# algorithm for Gaussian Elimination for square matrix.import numpy as npclass MatrixIsSingular(Excepti...原创 2019-08-16 10:29:54 · 621 阅读 · 0 评论 -
Algorithms : enum the Binary Search Tree sequences
Input a datastructre of the binary search tree. and print all of the generated sequences of the binary search tree.for example. input: 21 32 is the root, 1 is the left subtree, 3 is the r...原创 2019-08-30 13:10:51 · 108 阅读 · 0 评论 -
Algorithms: Is Graph Bipartite
Given an undirectedgraph, return true if and only if it is bipartite.Recall that a graph is bipartite if we can split it's set of nodes into two independentsubsets A and B such that every edge in ...原创 2019-09-02 17:04:58 · 140 阅读 · 0 评论 -
Algorithm for build order of some projects
Problem from the textbook.You are given a list of projects and a list of dependencies(which is a list of pairs of projects, where the second project is dependent on the first project). All of a proj...原创 2019-08-24 22:52:39 · 154 阅读 · 0 评论 -
Algorithm for Gram-Schmidt Transform
Gram-Schmidt 算法的主要目的是将矩阵转换为Orthonormal Matrix# GRADED FUNCTIONimport numpy as npimport numpy.linalg as laverySmallNumber = 1e-14 # That's 1×10⁻¹⁴ = 0.00000000000001# Our first function wil...原创 2019-08-20 09:44:13 · 726 阅读 · 0 评论 -
转:字典树(前缀树)
转载自:https://blog.csdn.net/weixin_39778570/article/details/81990417什么是字典树?叫前缀树更容易理解字典树的样子Trie又被称为前缀树、字典树,所以当然是一棵树。上面这棵Trie树包含的字符串集合是{in, inn, int, tea, ten, to}。每个节点的编号是我们为了描述方便加上去的。树中的每一条边上都标识...转载 2019-08-06 22:12:18 · 161 阅读 · 0 评论 -
将输入字符串中的空格替换为指定字符串
假设输入的字符串还有足够的空间,将输入串内的空格替换为%20例如:输入: “Mr John Smith ”, 13输出: “Mr%20John%20Smith”采用队列实现该算法,空间复杂度最大O(n), 最好O(1)时间复杂度O(n)代码如下:#include <iostream>#include <string>#inclu...原创 2019-07-12 07:46:16 · 726 阅读 · 0 评论 -
打印整数列a^3 + b ^ 3 = c ^ 3 + d ^ 3
Print all positive solutions ot the equationa^3 + b ^ 3 = c ^ 3 + d ^ 3 where a , b, c, and d are integers between 1 and 1000.optimized solution: by c++#include <iostream>#include &...原创 2019-07-06 22:05:27 · 318 阅读 · 0 评论 -
一个神奇的数据结构
Linklist HashTablehttps://github.com/ez8-co/linked_hash/blob/master/linked_hash.hpp今天在群里有一位群友分享了一个数据结构。通常大家都会使用到数据结构链表。但是链表由于不具备常数级的查找复杂度,有时候需要借助hashTable来做索引方便查找。这常用与缓存中。(其实,队列,二叉树这些都可以借助哈希表来提高其常数级的查...原创 2018-04-13 15:16:54 · 567 阅读 · 0 评论 -
Algorithms : Sort linklist
Sort a linked list inO(nlogn) time using constant space complexity./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)...原创 2019-09-05 12:38:23 · 182 阅读 · 0 评论 -
Algorithms : Trapping Rain Water II
The problem is from leetcode 407.https://leetcode-cn.com/problems/trapping-rain-water-iiGiven an m x n matrix of positive integers representing the height of each unit cell in a 2D elevation map, ...原创 2019-09-06 14:52:29 · 199 阅读 · 0 评论 -
LRU Cache Implementation
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and put.get(key) - Get the value (will always be positive) of the key if th...原创 2019-10-09 09:34:24 · 190 阅读 · 0 评论 -
转: 局部敏感哈希(Locality sensitive hash)
原理解释:https://blog.csdn.net/chichoxian/article/details/80290782代码实现https://blog.csdn.net/chichoxian/article/details/80408094转载 2019-09-30 16:47:40 · 163 阅读 · 0 评论 -
Complexity Analysis and K-D Tree datastructure
Complexity for KNN algorithm and the Optimization for KNN search.Time complexitySpace complexityTime/space complexity for recurssive algorithm.Master theorem for complexity analysis:https://...原创 2019-09-28 11:22:41 · 283 阅读 · 0 评论 -
Algorithm: KNN for Regression Problem
The KNN algorithm can not only used in the classify problem, it also can be used for the value prediction as regression problem.Predict for the salary:such as K = 3calculate the distance betwe...原创 2019-09-27 16:56:09 · 264 阅读 · 0 评论 -
Image Recognition by KNN Algorithm
Dataset:http://www.cs.toronto.edu/~kriz/cifar.htmlThe CIFAR-10 dataset consists of 60000 32x32 colour images in 10 classes, with 6000 images per class. There are 50000 training images and 10000 te...原创 2019-09-27 15:23:47 · 174 阅读 · 0 评论 -
Algorithm: Principle Component Analysis for High Dimension Reduction Data
The data preprocessing as standarlization or feature Scaling:https://en.wikipedia.org/wiki/Feature_scalingBefore we implement PCA, we will need to do some data preprocessing. In this assessment, s...原创 2019-09-24 12:41:05 · 937 阅读 · 0 评论 -
Algorithm : Dijkstra's algorithm and Bellmon-Ford Paths algorithm
The Dijkstra's Algorithm for network GraphProblem:There are N network nodes, labelled 1 to N.Given times, a list of travel times as directed edges times[i] = (u, v, w), where u is the source nod...原创 2019-09-14 14:24:52 · 191 阅读 · 0 评论 -
Algorithms: Kruskal's algorithm and Prim's algorithm for Minimum-spanning-tree
Reference: introduction to algorithmKruscal Algorithm O(ElgV) by Binary HeapsPrim's algorithm O(E + VlgV) by Fibonacci heapsA problem os a spanning treefor connected, undirected graph G=(V,E...原创 2019-09-12 17:40:19 · 520 阅读 · 0 评论 -
Algorithms : N-Queens problem with BackTracking Algorithms
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integern, return the number ofdistinct solutions to then-queens pu...原创 2019-09-11 14:29:24 · 166 阅读 · 0 评论 -
数据结构 - 链表的合并
今天有童鞋在群里问怎么合并两个有序链表。尝试写了一下,递归方式比较直观而且不容易出错,非递归的话代码可读性差一点而且也容易写错。这里提供一下主要代码。注意:如果是双向链表会更加复杂需要同时维护每个节点的两个指针,为了避免出错。双向链表强力建议增加头尾的哨兵节点。定义一个链表的节点如下:template <typename Comparable>struct Node { Compa...原创 2018-04-18 10:47:38 · 3107 阅读 · 0 评论 -
《Data Structure And Algorithm Analysis In C++》读书笔记六
Chapter 6 Priority Queues(Heaps)* Efficient implementation of the priority queue ADT.* Use of priority queues.* Advanced implementations of priority queues.6.1 Modelpriority queue ADT interface:insert...原创 2018-04-12 13:02:02 · 453 阅读 · 0 评论 -
一个打印目录树的例子
输入一个多行的字符串,表示目录树。对其进行解析,并按层次结构打印出目录/** n_number_sum_equal_m.cpp**/#include<iostream>#include <map>#include <string>#include <vector>#include <string.h>#include ...转载 2018-03-14 14:46:22 · 986 阅读 · 0 评论 -
二叉树的递归遍历与非递归遍历
多年之前笔者刚毕业的时候去百度面试,要求当场写出非递归方式的二叉树遍历。当场懵逼了。其实当时自己可能由于紧张,并且对不同数据结构之间的理解还不够深刻。本质上递归遍历也是利用栈来控制遍历的先后顺序,只是递归算法由于子程序的使用代码会简介许多。而非递归需要自己对进栈和出栈有一定的理解。而且还需要构建额外的数据结构。所以实现上会难于递归。销毁二叉树采用递归方式。遍历二叉树采用栈的方式原创 2017-10-27 09:58:02 · 341 阅读 · 0 评论 -
一道算法题 计算任意输入的一个基于10 的CheckSum
这是一个对于10进制数的checksum算法。公式如下代码如下:#define _CRT_SECURE_NO_WARNINGS#include #include #include class checkDigit{public: checkDigit(){}; ~checkDigit(){}; static int getCheckDigit(int原创 2017-09-15 09:57:21 · 496 阅读 · 0 评论 -
Algorithm, Part I Princeton University 公开课第一周 Union-Find算法
Union-Find with Weighted Union and find path compression一个使用Union-Find的例子 使用Java语言描述public class SocialNetwork{ public void main(String[] args){ } public class UnionFind{ pr原创 2016-09-07 08:19:35 · 923 阅读 · 0 评论 -
Algorithm, Part I Princeton University 公开课第一周 Introduction
Coursera上的Princeton的公开课 Algorithm, Part I 开始了。有兴趣的小伙伴可以一起跟课程为了尊重官方的协议这里不会直接贴出课程上的测验题的答案。可能会讨论解题思路,例题的代码等。课程官网: https://www.coursera.org/learn/introduction-to-algorithms参考书籍: Algorithms, 4th (am原创 2016-09-04 22:47:55 · 1590 阅读 · 0 评论 -
一个用Java实现的双向队列,可以分别在头尾插入和删除节点
分析,双向队列的内部实现是一个双向链表,可以分别从头尾插入和删除节点。通常使用一个first指向头 last指向尾。然后分别维护各种next和prev指针。通常情况要考虑边界条件,即当队列本身为空的时候插入新节点如何维护first和last的指向删除节点的时候,若队列变为空又应该如何维护first和last指针。非常繁琐而且容易写错,不过使用的空间最少,代码如下import java.原创 2016-09-19 15:57:22 · 4895 阅读 · 0 评论 -
数据结构之图(存储结构、遍历)
一、图的存储结构1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图。 从上面可以看出,无向图的边数组是一原创 2016-09-04 21:33:37 · 567 阅读 · 0 评论 -
一个使用Java语言描述的矩阵旋转的例子
一个把矩阵旋转输出的方法就是直接按照旋转以后的规律遍历输出但有时候需要把矩阵旋转一工后续使用,如果不创建一个新的矩阵直接做原有矩阵基础上做旋转该如何操作呢一个用java实现的算法import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class PrintMatrix {原创 2016-09-16 17:57:32 · 2643 阅读 · 0 评论 -
一道词典算法题,讲单词隐射为词典中的顺序
词典中单词的顺序是 a,b,c...z, aa,ab,ac...az, ba,bb,bc...,如果从第一个单词开始数,那么zzzz就是第475254个,如何将一个单词对应到这个序上?反过来给出一个整数,怎么做反向映射?解法思路,实际单词上就是一种26进制的的表示。 只不过最终在计算值的时候每个位的最小是1 而非 0.可以把A 隐射成0, Z 隐射成 25 但是注意计算数值的时原创 2016-08-09 16:08:25 · 526 阅读 · 0 评论 -
一道计算一元二次方程解的算法题
今天在群里有人求助一道求解一元二次方程的题目。尝试着写了一下,发现还挺容易犯错了。调试了几次总算OK了题目如下解法如下:#include double processData(double x, double *a, double*b, int count);//calc the formula//f(x)=a[0]* x^0 + a[1] * x^1原创 2016-06-22 22:05:14 · 2129 阅读 · 0 评论 -
算法的重要性
最近一位google的童鞋建议我去刷点算法题,之前面试的一些公司都特别看重算法基础,尤其是google的面试,要在白板上现场写出bug free的code。 对算法,思路和编码能力的要求相当高。虽然算法问题可能在实际项目中不一定用得到。但是刷算法题保持了一种头脑的运作状态Practice make you perfect!所以现在开始每天刷一题算法,并会不定期转载一些算法题和解法思原创 2016-06-13 10:15:56 · 1164 阅读 · 0 评论 -
一道关于链表的基本操作题
帮群里的朋友写的,main函数只写了单元测试每个子程序//This code is complied by the cc.exe in Visual studio 2013 using the c++#include struct ListNode{ int data; struct ListNode * next;};bool resideInSet(ListNod原创 2016-06-30 10:42:13 · 504 阅读 · 0 评论