fast

【Fast RTPS】Ubuntu下源文件安装

醉酒当歌 提交于 2019-11-27 08:06:25
依赖dependencies Asio和TingXML2库 sudo apt-get install libasio-dev libtinyxml2-dev Colcon 安装 Colcon是用来编译软件包的命令行工具。使用colcon将很容易编译Fast-RTPS和其依赖。 首先安装ROS2开发工具(colcon 和 vcstool): pip install -U colcon-common-extensions vcstool 下载Fast-RTPS和其依赖: $ wget https://raw.githubusercontent.com/eProsima/Fast-RTPS/master/fastrtps.repos $ mkdir src $ vcs import src < fastrtps.repos 最终,使用colcon编译所有软件 $ colcon build 手动安装 在手动编译Fast RTPS之前,你需要下载下述依赖,并用cmake编译。 Fast CDR $ git clone https://github.com/eProsima/Fast-CDR.git $ mkdir Fast-CDR/build && cd Fast-CDR/build $ cmake .. $ cmake --build . --target install

leetcode287——寻找重复数——java实现

若如初见. 提交于 2019-11-27 07:30:17
题目要求: 分析1: 刚看到这道题目的时候,我的第一反应是HashMap,事实上我也这样去做了,但是性能很差,只击败了百分之十几的用户。 具体代码如下: class Solution { public int findDuplicate(int[] nums) { if(nums == null || nums.length == 0) return 0; Map<Integer, Integer> map = new HashMap<>(); for(int num : nums) { if(!map.containsKey(num)) { map.put(num, 1); } else{ return num; } } return 0; } } 分析2: 于是我看了别人的解答,发现这道题可以利用弗洛伊德算法来解决,类似于之前做的环形链表II这道题,具体分析跟那道题是一模一样的,这里不再重复。传送门: leetcode142——环形链表II——java实现 由于在该数组中,有一个重复了一次或n次的元素,那么就表明这个数组中一定存在一个环。所以我们可以设置快慢指针来求这个环的入口——即重复元素的第一个数字。 这里需要 注意 的一点是,这里的参数是数组而不是链表,不能利用next,所以这里的slow指针和fast指针的设置比较特殊,需要注意。 具体代码如下: class

关于软件的说法

梦想的初衷 提交于 2019-11-27 01:23:37
1、如果手里有一把锤子,看啥都像钉子。 2、KISS :Keep It Simple Stupid 3、DRY:Donot Repeat Yourself 4、Make Clean Code Fast 比 Make Fast Code Clean重要,并且简单。 5、避免垃圾进,垃圾出。正确的做法是:垃圾不让进,或者垃圾进给出错误提示。 6、简单就是美,奥卡姆剃刀原理,没有必要,勿增实体。 7、好的代码尽量做到自说明的,不需要太多的注释。 8、一切软件的本质是增删改查,和数据可视化。这里的数据是结构化的数据,不同的结构把无差别的字节组织称千差万别的对象,千差万别的对象相互协作构成系统。 转载于:https://www.cnblogs.com/nzbbody/p/3421957.html 来源: https://blog.csdn.net/weixin_30882895/article/details/99234517

求单链表倒数第K个节点

◇◆丶佛笑我妖孽 提交于 2019-11-26 21:32:31
求单链表倒数第K个值 题目: 找出单链表的倒数第K个元素,比如给定单链表:1->2->3->4->5,则链表的倒数第2个元素为4 构造一个简单的单链表 思路 1、顺序遍历两遍法 2、使用快慢指针法 代码实现 代码实现 1、单链表中的每个节点包含数据和指向下一个节点的指针 public class LNode { int data; //数据域 LNode next; //下一个节点的引用 } 2、顺序遍历两遍就是,第一次遍历求出链表的整个长度n,第二次遍历求得第n-k+1个元素就是倒数第K个元素,该方法需要对链表进行两次遍历 3、快慢指针法,就是使用两个指针,一个快指针,一个慢指针,开始两个指针指向头节点,然后快指针移动K个位置,这时候两个指针之间的距离为K,然后两个指针同时移动,当快指针指向的节点为null的时候,慢指针所指的节点即为倒数第K个节点 4、代码实现 public class _015 { /** * 快慢指针法 * @param head 链表的头节点 * @param k * @return */ public static LNode FindLastK(LNode head, int k) { if (head == null || head.next == null) return head; LNode slow, fast; slow = fast =

leetcode 141环形链表(快慢指针)

假装没事ソ 提交于 2019-11-26 19:45:10
给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 public class Solution { public boolean hasCycle ( ListNode head ) { if ( head == null || head . next == null ) return false ; ListNode fast = head . next . next ; ListNode slow = head . next ; while ( fast != slow ) { if ( fast == null ) return false ; if ( fast . next == null ) return false ; if ( fast . next . next == null ) return false ; fast = fast . next . next ; slow = slow . next ; } return true ; } } 来源: https://blog.csdn.net/rudychan/article/details/99069921

DebugPort 清0

别等时光非礼了梦想. 提交于 2019-11-26 19:35:53
1.首先找到该进程的EPROCESS结构的址 在WinDbg 命令行输入!process 0 0得到EPROCESS结构的址 lkd> !process 0 0 **** NT ACTIVE PROCESS DUMP **** PROCESS 84648268 SessionId: 0 Cid: 0344 Peb: 7ffd7000 ParentCid: 02f4 DirBase: 18ca7000 ObjectTable: e14cca28 HandleCount: 272. Image: winlogon.exe 2. 再在命令行输入dt _EPROCESS 84648268 lkd> dt _EPROCESS 84648268 nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x06c ProcessLock : _EX_PUSH_LOCK +0x070 CreateTime : _LARGE_INTEGER 0x1cd84d5`34f2da66 +0x078 ExitTime : _LARGE_INTEGER 0x0 +0x080 RundownProtect : _EX_RUNDOWN_REF +0x084 UniqueProcessId : 0x00000344 Void +0x088 ActiveProcessLinks : _LIST

leetcode287. 寻找重复数

为君一笑 提交于 2019-11-26 16:59:44
善于利用快慢指针 这道题的难点不在于代码,而是在于理解原因 a = nums[a]理解成一步 自然 a = nums[nums[a]]就为两步,这就是快慢指针了 只要数组的值小于数组的长度,就总有一天会形成一个环 现在要找到重复数,其实就是找到,那个重复点 现在我们使用快慢指针,就能找到相交点 由于是快慢指针,所以“从起点绕一圈之后到达相交点的距离”是“从起点到相交点的距离”的两倍 自然,“从起点到相交点的距离” = “从相交点绕一圈到相交点的距离” 而从重复点到相交点的那一段是重复的, 所以“从起点到重复点的距离” = “从相交点绕一圈到重复点的距离” 我们就用相同的频率从起点和相交点出发,就能找到重复点 public int findDuplicate(int[] nums) { int fast = 0, slow = 0; while(true) { fast = nums[nums[fast]]; slow = nums[slow]; //找到相交点 if(slow == fast) { fast = 0; //找到重复点 while(nums[slow] != nums[fast]) { fast = nums[fast]; slow = nums[slow]; } return nums[slow]; } } } 来源: https://blog.csdn.net

剑指Offer编程题(Java实现)——链表中环的入口结点

你说的曾经没有我的故事 提交于 2019-11-26 14:05:43
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路一 迭代遍历链表,利用HashSet将每个结点添加到哈希表中,如果添加失败(重复遍历了这个结点即遇到环),输出该结点为环入口 实现 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ import java.util.HashSet; public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { if(pHead == null) return pHead; HashSet hash = new HashSet(); while(pHead != null){ boolean chk = hash.add(pHead); if(chk == false) return pHead; pHead = pHead.next; } return null; } } 运行时间:17ms 占用内存:9608k 思路二 使用双指针,一个指针 fast 每次移动两个节点,一个指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上

leetcode 142. 环形链表 II(c++)

不羁岁月 提交于 2019-11-26 10:34:57
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:tail connects to node index 0 解释:链表中有一个环,其尾部连接到第一个节点。 示例 3: 输入:head = [1], pos = -1 输出:no cycle 解释:链表中没有环。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *detectCycle(ListNode *head) { ListNode *slow = head, *fast =