Pistachio's Blog

Later equals never.

全排列

全排列涉及循环和递归。递归由递归关系式和递归出口组成。 在每一次循环中,可以从左到右确定一个数字,然后通过递归让剩下k-1个数进行全排列。 也可以从右到左,先确定最后一个数字,然后把前面k-1个数字进行全排列。 Leetcode 输入: [1,2,3] 输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 思路一......

摩尔投票算法

摩尔投票算法(Boyer-Moore majority vote algorithm)​ 该算法是一种在线性时间O(n)和空间复杂度的情况下,在一个元素序列中查找包含最多的元素,是典型的流算法。 Leetcode 主要元素 如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。 123456789101112131415161718int......

字符串知识总结

读入有空格的字符串1、getline 123#include <string>string str;getline(cin,str); 2、将句子中每个单词读入队列中 1234567891011 // sentence1 = "My name is Haley"; sentence2 = "My Haley"string w; strin......

KMP

1.求前缀表next[]为什么要求前缀表? 如果用暴力的双指针,在失配的时候又从模式串的开头重新匹配,增加了回溯的次数,效率低,复杂度为O(m*n)。 前面已经匹配上的不用再搜索,通过next[]数组,在失去匹配的地方找到该元素的前后缀个数n,移动到模式串的下标n。复杂度时O(m+n)。 通俗来说,next数组存放每个元素之前的字符串,最长公共前后缀的个数。 如何求next[]呢?Text......

今天博客又搬回hexo啦~

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Qu......

二分查找

前言日常刷LeetCode的时候,用暴力解决了一道困难级别的题目,其时间限制是log(m+n),才发现真正做法是用二分查找,因此补补相关知识。 题目中有序、时间复杂度要求logn、最大值最小等,可以考虑二分查找。 一、 基本思想二分查找也称为是折半查找,属于有序查找算法。用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的......

链表

初始化一个结点1234ListNode node = new ListNode(); //初始化一个空结点,无值(不提倡这样写)ListNode node = new ListNode(0); //初始化一个节点值为0的空结点(最常用的规范写法) 手动建链表1234567891011121314151617181920212223242526272829303132333435363......

Jekyll搭建博客

1.先安装rvm 通过rvm安装ruby环境1curl -sSL https://get.rvm.io | bash -s stable 查看是否安装成功 1rvm -v 2.换国内源查看现在的源 1gem sources -l 删除之前的源 1gem sources --remove 增加国内源 1gem sources -a https://gems.ruby-china......

安装deepin后要做的事情

1. 换源1vim /etc/apt/sources.list 2. 命令行主题配置下载oh-my-zsh 通过curl 1sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 通过wget 1sh -c "$(wget......

LinuxShell命令模拟器

LinuxShell命令模拟器一.原理分析0.终端执行步骤​ 1)读取用户从键盘输入的命令,终端会分析是否是内部命令。如果是,则把命令分解为系统调用,并传给linux内核。如果不是,若不是再检查是否是一个应用程序,模拟shell的命令解析器正是这样。上述两种情况也不是的话,则报出错误信息。 ​ 2)分析命令,以命令名为文件名,将其他参数改造为系统调用execve()内核级系统调用所要求的形式......