<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_41246458的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_41246458</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_41246458]]></copyright><item><title><![CDATA[Ubuntu64位执行32位文件]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106616373</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106616373</guid><author>qq_41246458</author><pubDate>Mon, 08 Jun 2020 12:31:41 +0800</pubDate><description><![CDATA[执行文件出现‘没有那个文件或目录’，Ubuntu是64位，需执行文件是32位。

需要一个库才能在64位的系统上执行32位的程序，所以根据你的系统，把这个库安装上即可。
所使用的命令是：
sudo dpkg --add-architecture i386
sudo apt install libc6:i386

...]]></description><category></category></item><item><title><![CDATA[编译原理之简单语法分析器（c语言）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106466820</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106466820</guid><author>qq_41246458</author><pubDate>Mon, 01 Jun 2020 10:32:32 +0800</pubDate><description><![CDATA[语法分析是编译过程的核心部分，其基本任务是根据语言的语法规则进行语法分析，如果不存在语法错误即给出正确的语法结果，并为语义分析和代码生成做准备。

语法分析器的两种方式
语法分析器的任务主要是确定是否可以以及如何从语法的起始符号推导出输入符号串（输入文本），主要可以通过两种方式完成：
1. 自顶向下分析
根据形式语法规则，在语法分析树的自顶向下展开中搜索输入符号串可能的最左推导。单词按从左到右的顺序依次使用。
2. 自底向上分析
语法分析器从现有的输入符号串开始，尝试将其根据给定的形式语法规则进行改写，最.]]></description><category></category></item><item><title><![CDATA[设计算法求解FIRSTVT和LASTVT（c语言）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106467237</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106467237</guid><author>qq_41246458</author><pubDate>Mon, 01 Jun 2020 10:31:59 +0800</pubDate><description><![CDATA[Firstvt和Lastvt是为了画算符优先关系表的（就是表里面填优先大于小于等于的抄那个）。

Firstvt：
找Firstvt的三条规则：如果要找A的Firstvt，A的候选式中出现：

A-&gt;a…，即以终结符开头，该终结符入Firstvt；
A-&gt;B…，即以非终结符开头，该非终结符的Firstvt入A的Firstvt；
A-&gt;Ba…，即先以非终结符开头，紧跟终结符，则终结符入Firstvt。

Lastvt：
找Lastvt的三条规则：如果要找A的Lastvt，A的候选式中出现：.]]></description><category></category></item><item><title><![CDATA[linux内核模块之简单进程遍历]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106277576</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106277576</guid><author>qq_41246458</author><pubDate>Fri, 22 May 2020 12:59:46 +0800</pubDate><description><![CDATA[了解linux内核中常用的数据结构进程控制块—task_struct；
了解include/linux/sched.h中的函数和宏；
初步掌握内核宏定义for_each_process ()、list_entry()的功能。

实现的内容
编写一个内核模块，打印出系统中所有的进程的进程名、PID号和进程状态，即实现进程的遍历，类似ps命令。
操作如下
（注：内核进程此处称为内核线程，其实都是task_struct）
一、编写代码（list.c）
#include &lt;linux/init.h&gt;
.]]></description><category></category></item><item><title><![CDATA[使用git管理控制github]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106185537</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106185537</guid><author>qq_41246458</author><pubDate>Mon, 18 May 2020 09:04:39 +0800</pubDate><description><![CDATA[git管理项目。（个人笔记，不适用于他人）

前提：

已经注册好github；
可以下载git管理图形界面（推荐sourceTree）。

一、GitHub 基本概念


Repository
仓库的意思，即你的项目，你想在 GitHub 上开源一个项目，那就必须要新建一个 Repository ，如果你开源的项目多了，你就拥有了多个 Repositories 。

Issue
问题的意思，举个例子，就是你开源了一个项目，别人发现你的项目中有bug，或者哪些地方 做的不够好，他就可以给你提个 Issue.]]></description><category></category></item><item><title><![CDATA[leetcode题之合并两个有序链表（简单）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106179340</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106179340</guid><author>qq_41246458</author><pubDate>Sun, 17 May 2020 19:30:30 +0800</pubDate><description><![CDATA[直接的数值比较，这里可以新链接一个链表，或者直接在其中一个链表插入移动。

题目描述
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例：

输入：1-&gt;2-&gt;4, 1-&gt;3-&gt;4
输出：1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4

代码：
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        /.]]></description><category></category></item><item><title><![CDATA[leetcode题之有效的括号（简单）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106178027</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106178027</guid><author>qq_41246458</author><pubDate>Sun, 17 May 2020 17:54:22 +0800</pubDate><description><![CDATA[遇到这道题一开始的思路就是使用栈的先进后出；


不过看到一个简洁的代码是直接匹配括号，然后删除一对括号，如果符合，最后字符串为空；
不过后者时间复杂度和空间复杂度不好，因为需要不断调用api。



题目描述
给定一个只包括 ‘(’，’)’，’{’，’}’，’[’，’]’ 的字符串，判断字符串是否有效。
有效字符串需满足：
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例1：

输入: “()”
输出: true

示例2：

输入: “(]...]]></description><category></category></item><item><title><![CDATA[leetcode题之删除倒数第n个节点（中等）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106171144</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106171144</guid><author>qq_41246458</author><pubDate>Sun, 17 May 2020 10:53:11 +0800</pubDate><description><![CDATA[和查找链表倒数第n个节点差不多，不过这里我们先查到倒数第n个的前一个，这样通过a.next指向需删除的下一个节点，这个节点就被删除了。

题目描述：
给定一个链表，删除链表的倒数第 n 个节点，并且返回链表的头结点。
说明：
给定的 n 保证是有效的。
进阶：
你能尝试使用一趟扫描实现吗？
示例

给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2.
当删除了倒数第二个节点后，链表变为 1-&gt;2-&gt;3-&gt;5.

代码：
老方法，使用双指针；
/**
 *.]]></description><category></category></item><item><title><![CDATA[leetcode题之四数之和（中等）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106158560</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106158560</guid><author>qq_41246458</author><pubDate>Sat, 16 May 2020 14:17:20 +0800</pubDate><description><![CDATA[两数之和，三数之和，它来了。。。四数之和。
可推广到n数之和。

题目描述：
给定一个包含 n 个整数的数组 nums 和一个目标值 target，判断 nums 中是否存在四个元素 a，b，c 和 d ，使得 a + b + c + d 的值与 target 相等？找出所有满足条件且不重复的四元组。
注意：答案中不可以包含重复的四元组。
示例：

给定数组 nums = [1, 0, -1, 0, -2, 2]，和 target = 0。
满足要求的四元组集合为：
[
[-1,  0, 0, 1],
[.]]></description><category></category></item><item><title><![CDATA[Linux系统之内核模块编程]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106151820</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106151820</guid><author>qq_41246458</author><pubDate>Sat, 16 May 2020 00:18:23 +0800</pubDate><description><![CDATA[Linux操作系统内核是单内核，速度和性能都很高，如何提高可扩展性和可维护性？那就是模块机制。用户可以根据需要，在不需要对内核重新编译的情况下，可以将模块动态地载入或移出内核。

一、什么是模块？
模块是具有独立功能的程序，它可以被单独编译，但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行。
模块通常由一组函数和数据结构组成，用来实现一种文件系统、一个驱动程序或其他内核上层的功能。
内核模块是Linux内核向外部提供的一个插口，其全称为动态可加载内核模块（Loadable Kernel.]]></description><category></category></item><item><title><![CDATA[leetcode题之三数之和为0（中等）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106140721</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106140721</guid><author>qq_41246458</author><pubDate>Fri, 15 May 2020 14:07:07 +0800</pubDate><description><![CDATA[《LeetCoding》
读完题我就上手 操作起来稳如狗
二话不说就提交 最终超时骂我草
三顾题解再上手 提交错误心疾首
寻思看看评论区 没想和我一样虚
愁的我是头发白 做题还得自己来
反反复复终无误 击败百分三点五

题目描述：
给你一个包含 n 个整数的数组 nums，判断 nums 中是否存在三个元素 a，b，c ，使得 a + b + c = 0 ？请你找出所有满足条件且不重复的三元组。
注意：答案中不可以包含重复的三元组。
示例：

给定数组 nums = [-1, 0, 1, 2, -1, -.]]></description><category></category></item><item><title><![CDATA[算法题之约瑟夫环（简单）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106137584</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106137584</guid><author>qq_41246458</author><pubDate>Fri, 15 May 2020 12:13:19 +0800</pubDate><description><![CDATA[约瑟夫环代码简短，简单但可读性变难。

题目描述：
一共有n个人，依次报数，报到k的人被淘汰，第k+1个人又从1开始，最后留下的人的编号。
示例1：

输入（8，3）
输出 7
最后12345678中的第7编号留下；

示例2：

输入（1，3）
输出 1
当为1个人时，无论怎么报数，已经是最后留下的人

简单说明原理：
我们可以用数组和链表模拟游戏过程，得出结果，但这里只需结果，无需过程，所以用数学方法；
（案例为5个人报数，报到3的排除）




原编号
1
2
3
4
5




排除
1
2

4.]]></description><category></category></item><item><title><![CDATA[leetcode题之返回倒数第k个节点（简单）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106125649</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106125649</guid><author>qq_41246458</author><pubDate>Thu, 14 May 2020 18:05:27 +0800</pubDate><description><![CDATA[快慢指针

题目描述：
实现一种算法，找出单向链表中倒数第 k 个节点。返回该节点的值。
示例:

输入： 1-&gt;2-&gt;3-&gt;4-&gt;5 和 k = 2
输出： 4

代码如下：
class Solution {
    public int kthToLast(ListNode head, int k) {
        ListNode slow = head;
        ListNode fast = head;
        while(k&gt;0){
     .]]></description><category></category></item><item><title><![CDATA[leetcode题之最长公共前缀（简单）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106122515</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106122515</guid><author>qq_41246458</author><pubDate>Thu, 14 May 2020 16:21:30 +0800</pubDate><description><![CDATA[求最大字符串和最小字符串（字符串是字典排序）的最长公共前缀；
直接以第一个字符串为标准一次删去最后一个字符，startwith判断，直到最后一个字符串；
字典树


题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀，返回空字符串 “”。
示例1：

输入: [“flower”,“flow”,“flight”]
输出: “fl”

示例2：

输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。

代码如下：
上述的第二种方法：
..]]></description><category></category></item><item><title><![CDATA[leetcode题之罗马数字转整数（简单）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106120171</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106120171</guid><author>qq_41246458</author><pubDate>Thu, 14 May 2020 15:10:27 +0800</pubDate><description><![CDATA[IV这种可以理解减I加V，所以-1+5=4；

题目描述：
罗马数字包含以下七种字符: I， V， X， L，C，D 和 M。
字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如， 罗马数字 2 写做 II ，即为两个并列的 1。12 写做 XII ，即为 X + II 。 27 写.]]></description><category></category></item><item><title><![CDATA[leetcode题之整数转罗马数字（中等）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106119942</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106119942</guid><author>qq_41246458</author><pubDate>Thu, 14 May 2020 14:57:24 +0800</pubDate><description><![CDATA[固定符号一般采取编码

题目描述：
罗马数字包含以下七种字符： I， V， X， L，C，D 和 M。
字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如， 罗马数字 2 写做 II ，即为两个并列的 1。12 写做 XII ，即为 X + II 。 27 写做  XXVII, 即为.]]></description><category></category></item><item><title><![CDATA[leetcode题之盛最多容器水（中等）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106113481</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106113481</guid><author>qq_41246458</author><pubDate>Thu, 14 May 2020 09:57:27 +0800</pubDate><description><![CDATA[平移，贪心算法

题目描述：
给你 n 个非负整数 a1，a2，…，an，每个数代表坐标中的一个点 (i, ai) 。
在坐标内画 n 条垂直线，垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。
找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明：你不能倾斜容器，且 n 的值至少为 2。
示例：


输入：[1,8,6,2,5,4,8,3,7]
输出：49

java代码：
class Solution {
    public int maxArea(int[] .]]></description><category></category></item><item><title><![CDATA[Kmp算法的next数组实现（精简）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106112183</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106112183</guid><author>qq_41246458</author><pubDate>Thu, 14 May 2020 08:53:48 +0800</pubDate><description><![CDATA[kmp算法戳这里-&gt;kmp算法精简说明
这里我们学习next数组是如何通过代码实现一一取值的。

一、如何实现
变量i：用于遍历next数组下标给一一赋值；
变量j：用于指向上一段的最长公共前缀的下一位。
例如：当我们在算“abad”的next值时， 前一段就是”aba“，此时j指向的就是b。

①下标i项与下标j项比较；

相等，那直接j移到下一位，相同前后缀就是（j++）的值；
不相等，j需要回溯：


回溯我们令查看下标j-1的next数组值，发现为1；令j=next[j-1]；

原本的 j.]]></description><category></category></item><item><title><![CDATA[KMP算法（最精简的理解）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106099296</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106099296</guid><author>qq_41246458</author><pubDate>Wed, 13 May 2020 15:35:53 +0800</pubDate><description><![CDATA[算法理解以简略为主，太多理论解释容易绕晕。

主要有以下三个数组：


匹配串：字符型


模式串：字符型


next[i]数组：int


一、next[i]数组说明（先了解这个比较好学）
next[i]是专门针对模式串的（功能我们后面结合实例介绍）：




模式串
a
b
c
d
a
b
d




next[i]数值
0
0
0
0
1
2
0


①首先我们了解前缀和后缀
前缀：（这里直接距离理解，比概念有用）
abc的前缀包括{a,ab};
abcd的前缀包括{a,ab,abc};
可以看出.]]></description><category></category></item><item><title><![CDATA[leetcode题之Z字形变换（中等）]]></title><link>https://blog.youkuaiyun.com/qq_41246458/article/details/106040458</link><guid>https://blog.youkuaiyun.com/qq_41246458/article/details/106040458</guid><author>qq_41246458</author><pubDate>Sun, 10 May 2020 19:24:51 +0800</pubDate><description><![CDATA[一道找规律题

直接z型存入n（规定的行）个stringbuilder；
根据规律（2*n-2为周期）。


题目描述
将一个给定字符串根据给定的行数，以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时，排列如下：
L   C   I   R
E T O E S I I G
E   D   H   N
之后，你的输出需要从左往右逐行读取，产生出一个新的字符串，比如：“LCIRETOESIIGEDHN”。
请你实现这个将字符串进行指定行数变换的函.]]></description><category></category></item></channel></rss>