- 博客(76)
- 收藏
- 关注
原创 使用信号量实现没有饥饿问题的锁 (假设信号量为 weak semaphores)
实现没有饥饿问题的锁。实现算法: Morris's solution。 It uses two turnstiles to create two waiting rooms before the critical section.The mechanism works in two phases. During the first phase, the first turnstile...
2019-12-09 15:00:13
484
原创 LeetCode-365-水壶问题 (不定次方程的整数解)
365. Water and Jug ProblemDescriptionYou are given two jugs with capacities x and y litres. There is an infinite amount of water supply available. You need to determine whether it is possible to m...
2019-12-09 11:52:57
291
原创 260. Single Number III (位运算)
LeetCode-260.Single Number IIIDescriptionGiven an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that a...
2019-11-22 13:43:24
257
原创 LeetCode.208 实现 Trie (字典树的实现)
LeetCode.208实现一个字典树 TrieTrie: 百度百科结点类型的定义在我的实现中, 用了两种不太一样的结点类型.Node1视频教程地址: Trie Data Structure (EXPLAINED)(演示不断插入每个字符之后树的变化)两个成员变量:map, 用于接受一个字符, 并得到对应的下一个孩子结点isLeaf, 指定当前是否到达叶子结点除此之...
2019-11-14 13:03:54
233
原创 LeetCode.207 LeetCode.210 (有向无环图拓扑排序的实现)
210. Course Schedule II207. Course ScheduleDescriptionThere are a total of n courses you have to take, labeled from 0 to n-1.Some courses may have prerequisites, for example to take course 0 you h...
2019-11-14 12:18:36
605
原创 200. Number of Islands (并查集)
200. Number of IslandsDescriptionGiven a 2d grid map of '1's (land) and '0's (water), count thenumber of islands. An island is surrounded by water and is formedby connecting adjacent lands horizon...
2019-11-12 13:44:52
230
原创 187. Repeated DNA Sequences (位运算)
LeetCode-187.Repeated DNA SequencesDescriptionAll DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACGAATTCCG". When studying DNA, it is sometimes useful to i...
2019-11-11 21:51:35
179
原创 人工智能实验一: 搜索算法问题求解
一、实验目的了解4种无信息搜索策略和2种有信息搜索策略的算法思想; 能够运用计算机语言实现搜索算法; 应用搜索算法解决实际问题(如罗马尼亚问题); 学会对算法性能的分析和比较二、实验的硬件、软件平台硬件:计算机 软件:操作系统:WINDOWS/Linux 应用软件:C,Java或者MATLAB三、实验内容及步骤使用搜索算法实现罗马尼亚问题的求解 (从出发点 Ar...
2019-11-11 21:09:52
1517
原创 166. Fraction to Recurring Decimal (map + math)
166. Fraction to Recurring DecimalDescription给定一个分子, 一个分母.返回计算得到的结果.如果小数部分有重复的, 则将重复部分用 () 括起来.ExampleInput: numerator = 1, denominator = 2Output: "0.5"Input: numerator = 2, denominator = 1...
2019-11-09 13:08:44
137
原创 LeetCode-165. Compare Version Numbers(版本比较)
165. Compare Version NumbersDescription比较两个字符串类型表示的版本 version1, version2.如果 version1 > version2 return 1;如果 version1 < version2 return -1;如果 version1 == version2 return 0;ExampleInput: v...
2019-11-09 12:51:24
232
原创 146. LRU Cache (双向链表+哈希表实现 LRU Cache)
146. LRU Cache题目大意: 设计并实现一个 LRU Cache.实现对应的函数 get(key), put(key, value).Follow up: 所有操作 O(1) 时间复杂度.实现 LRU Cache 的关键数据结构: 双向链表 + 哈希表.以下实现中, 定义了双向链表结点类 Node. 以及 unordered_map<int, *Node> 类型的 ...
2019-11-07 16:06:28
381
原创 LeetCode- 137.Single Number II (位运算)
LeetCode-137链接: 137. Single Number IISolution1:不合题意的解法.循环遍历每个数的每一位(32 bit).将所有数的某一位 (第 i 位) 加起来, 得到的总和为 sum.sum % 3 得到这个单独数的第 i 位.通过位运算将这个第 i 位移到正确位置, 遍历完所有位得到最终结果.Code:class Solution { ...
2019-11-02 11:33:26
275
原创 LeetCode-130 与 并查集
LeetCode-130Solution1:遍历边界点, 如果该值为 ‘O’, 则在该处进行递归继续扩展. 并将走过的路程上的点赋值为 ‘*’.遍历整个二维空间, 将所有为 ‘*’ 的赋值为 ‘O’, 其他均为 ‘X’.Code:class Solution {public: void solve(vector<vector<char>>& ...
2019-10-31 17:52:51
432
1
原创 LeetCode-114
题目链接:LeetCode-114. Flatten Binary Tree to Linked ListSolution1递归处理, 对于每个结点, 每次处理返回其右子树的最右结点:处理该结点的左子树, 返回结点 left.处理该结点的右子树, 返回结点 right.根据 left, right 将左子树连接到该结点与右子树的中间.根据 left, right 是否为空, 返回 ...
2019-10-27 12:56:53
204
原创 栈实现树的前序, 中序, 后序遍历
前序遍历:Code:vector<int> inorderTraversal(TreeNode* root) { // 中序遍历. vector<int> retvec; stack<TreeNode*> stk; while (root != NULL || !stk.empty()) { // 注意循环进行的条...
2019-10-25 17:44:48
739
原创 LeetCode-102 树的层次遍历
#####LeetCode-102Solution1:直接使用队列, 每次处理一层.class Solution { // 层次遍历, 使用队列. 93.41%.public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>>...
2019-10-25 17:22:23
200
原创 Leetcode-60 Permutation Sequence
Leetcode-60链接: 60.Permutation SequenceDescription:The set [1,2,3,...,n] contains a total of n! unique permutations.By listing and labeling all of the permutations in order, we get the following s...
2019-10-12 11:06:02
161
转载 strcpy和strdup比较和详解
strcpy和strdup比较和详解函数和功能描述:①extern char *strdup(char *s);头文件:string.h功能: 将串拷贝到新建的位置处说 明:strdup不是标准的c函数。strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。返回值:返回一个指针,指向为复制...
2019-10-09 21:09:51
203
转载 C++数组初始化为0
局部数组:没有默认值,如果声明的时候不定义,则会出现随机数(undefined);如果声明的长度与赋值长度不相等,则有,声明的长度>赋值长度,后面用0补足,声明的长度>赋值长度,发生编译错误;全局数组:声明时不赋值,默认值为0指针new:动态获取的内存,默认值undefined初始化为0:全局数组 int arr[10];局部数组 int arr[10]...
2019-10-08 18:47:17
4277
原创 Leetcode-46 Leetcode-47
题目链接Leetcode-46Description给定一组无重复整数, 返回所有可能的排列.Example:Input: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解法一:class Solution {public: vector<vec...
2019-10-07 13:11:55
160
转载 结构体中最后一个长度为 0 或 1 的数组
结构体中最后一个长度为 0 或 1 的数组简单 code 示例#include <stdio.h>struct str_t1 { int a; int b; char *c;} __attribute ((packed));struct str_t2 { int a; int b; char c[0]; /* c 并不占用实际的空间 */} __attri...
2019-07-24 00:39:33
479
原创 LeetCode-394. 字符串解码
题目链接Leetcode-394. 字符串解码题目描述 :给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数...
2019-06-04 15:35:05
967
原创 Leetcode- 347( 桶排序 或 快排思想)
题目链接 LeetCode-347题目描述给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]思路一根据自己的做法,使用一个列为2的二维数组来存储 <元素, 个数>。根据二维数组的第二列**(元素个数), 利用快速排序对二维数组进行排序。取出二维数组中前 k 个**的 元素...
2019-05-29 17:25:58
1041
1
原创 Leetcode-395. 至少有 k 个重复字符的最长子串
Leetcode-395.至少有K个重复字符的最长子串链接:Leetcode-139算法思想 : 分治法, 递归使用一个数组来存储字符串中每个字符的个数, 遍历找出其中个数小于 k 的字符,根据这些字符对字符串进行分隔,递归求解分隔以后的更小的子问题。// 递归,分治// 使用数组计数class Solution { public int re = 0; public int...
2019-05-28 15:41:00
625
原创 最长公共子序列算法思想的应用
最长公共子序列解答:public class Test1 { public static void main(String[] args) { char[] chars1 = "ABCBDAB".toCharArray(); char[] chars2 = "BDCABA".toCharArray(); LCS(chars1, cha...
2019-05-19 15:47:13
1644
原创 Linux 文件属性及文件权限修改
一、文件属性用户分为三种:文件拥有者、群组以及其它人,对不同的用户有不同的文件权限。使用命令 ll 查看并显示文件信息:-rwxr-xr-x 1 root root 66 May 18 19:01 test.txt*对该信息的解释:-rwxr-xr-x :第一位为文件类型字段,后 9 位为文件权限字段。 1 : 链接数 root ...
2019-05-18 19:52:43
365
转载 数据库相关知识点
参考博客:https://www.cnblogs.com/wenxiaofei/p/9853682.htmlhttp://blog.codinglabs.org/articles/theory-of-mysql-index.html一、什么是索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。...
2019-05-17 21:45:27
299
原创 Java之 Condition 以及使用 Condition、PriorityQueue 实现 生产-消费者模型
一、Condition的介绍Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,阻塞队列实际上是使用了Condition来模拟线...
2019-05-16 19:52:33
279
转载 编写一个简单的死锁
参考博客:https://www.cnblogs.com/mudao/p/5867107.htmlpublic class Dead_Lock1 { public static String obj1 = "obj1"; public static String obj2 = "obj2"; public static void main(String[] arg...
2019-05-16 17:30:15
954
转载 【转】Java中的String,StringBuilder,StringBuffer三者的区别
转自:https://www.cnblogs.com/su-feng/p/6659064.html 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而Str...
2019-05-16 15:50:07
153
原创 有趣的小题
1.292. Nim 游戏首先,如果当前石头为 4 个,并且是我先拿,无论怎么拿都是输。 然后考虑,如果是 4 的倍数,8, 16, 20。依然是我先拿的话,那么无论无何都可以 4 个 4 个一组拿到最后只剩下 4个,依然是我输。而如果不是 4 的倍数,我先拿,那我都可以拿走几个石头,使得剩余石头为 4 个倍数。我赢了。return n%4!=0;2. 用绳子计时 1...
2019-05-15 18:23:13
299
原创 LeetCode - 236 二叉树的最近公共祖先
原题url:236. Lowest Common Ancestor of a Binary Tree根据自己的思路写出来的代码性能太差。网上的解答一:class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root ==...
2019-05-15 17:46:42
153
原创 Leetcode-231 位运算判断一个整数是否是 2 的幂次
如果一个数是2的n次方,那么这个数对应的二进制表示中只有一位是1,其余都是0.因此判断一个数是否是2的n次方,可以转换为判断这个数对应的二进制表示是否只有一位为1.如果一个数的二进制表示只有一位是1, 如 num = 00010000, 那么 num-1 的二进制为 num-1 = 00001111由于num与num-1二进制表示中每一位都不相同,因此 num & (num-1) 的...
2019-05-15 15:32:50
379
原创 关于 Java 参数传递问题 ( 值传递与引用传递 )
1.基本类型和引用类型在内存中的保存Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。基本类型的变量保存原始值,即它代表的值就是数值本身;而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char...
2019-05-14 17:32:11
281
转载 Java之synchronized、CAS机制、自旋锁
Java提供了两种锁机制来控制多个线程对共享资源的互斥访问,第一个是 JVM 实现的 synchronized ,而另一个是 JDK 实现的 ReentrantLock.一、synchronized一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁);如果这个时候同步对象的锁被其他线程拿走了,...
2019-05-11 18:39:25
1161
转载 Java 单例模式的几种写法
所谓单例,就是确保一个类只有一个实例,并提供该实例的全局访问点。使用一个私有构造函数、一个私有静态变量以及一个公有静态函数(返回该静态变量)来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。1. 懒汉式(线程不安全, 不可用)public class Singleton_exam { private static S...
2019-05-09 22:22:37
179
转载 Servlet 之 HTTP请求头
一下内容摘抄自:菜鸟教程客户端的HTTP请求头当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。以下是来自于浏览器端的重要头信息,您可以在 Web 编程中频繁使用:头信息 描述 Accept 这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值image/png或...
2019-05-02 13:06:40
693
转载 Java之内存模型
参考博客:https://www.cnblogs.com/nexiyi/p/java_memory_model_and_thread.htmlhttps://www.cnblogs.com/dolphin0520/p/3920373.htmlhttps://www.cnblogs.com/chengxiao/p/6528109.htmlhttps://cyc2018.github....
2019-04-29 18:37:26
200
原创 leetcode-309: 最佳买卖股票时机含冷冻期
参考博客:LeetCode 309: 一个很清晰的DP解题思路生动形象,图解一目了然题目传送:309. 最佳买卖股票时机含冷冻期类似于《逻辑与计算机设计基础》中的状态图,根据状态图写出转化方程:s[i] = Math.max(s[i-1], sell[i-1]);buy[i] = Math.max(buy[i-1], s[i-1]-prices[i]);sell[i] =...
2019-04-28 23:37:58
205
转载 计算机网络之链路层
参考博客:https://www.cnblogs.com/whgk/p/6065281.htmlhttps://www.cnblogs.com/whgk/p/6048354.html主机之间数据的传输:基本概念链路:一条点到点的物理线路段,中间没有任何其他的交换结点。 一条链路只是一条通路地一个组成部分。数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传...
2019-04-26 16:53:57
347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人