
数据结构与算法
我的大名王二狗
机器人算法,行为规划,人工智能,嵌入式,深度强化学习,ros,ubuntu,Linux
展开
-
从DFS到WeightedA*--图搜索算法的前世今生
一. 图的基础 (1) 图的结构: (2) 图的要素: 图 = 顶点(vertex) + 边(edge) + 权重(weight) + 度 (degree) G(V, E, W, D) 度:与这个顶点相连接的边的数目。 入度:有向图中,指向该顶点的边。 出度:有向图中,从该顶点...原创 2020-11-07 10:30:34 · 1480 阅读 · 1 评论 -
【Leetcode刷题篇】(十九)两数相加-链表
Leetcode题目编号:2/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public...原创 2020-03-02 11:40:20 · 176 阅读 · 0 评论 -
【Leetcode刷题篇】(十八)奇偶链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* o...原创 2020-03-01 21:22:34 · 173 阅读 · 0 评论 -
【数据结构与算法】(八)O(n^2)排序
一 .选择排序: 从头到尾遍历i次数组,每次选出最小的,放在最前面的第i个位置(和原来的第i个位置的元素交换)。性能: 选择排序首先有个大循环,用来标记当前推进到第几个位置;其次有个内循环,用来选出最小的元素并做交换,因此,选择排序时间复杂度恒为O(n^2)。空间复杂度恒为O(1)。代码:template<typename T>void s...原创 2019-07-12 10:17:13 · 236 阅读 · 0 评论 -
【数据结构与算法】(七)异或法
定义: 异或是基于二进制的位运算,用符号XOR或者^表示,对符号两边的数的二进制进行运算,相同为0,不同为1。简单理解就是不进位加法。性质:(1)交换律 : a^b = b^a(2)结合律 : a^b^c = a^(b^c)(3)x^x = 0 x^0 = x(4)自反性:a^b^b = a (最重要的性质)(5)如果a^b =...原创 2019-07-05 16:46:30 · 2061 阅读 · 1 评论 -
【数据结构与算法】(六)快慢指针法
用途一:查找链表中间节点示例: head->1->2->3->4->5->6->7->None 结果:中间节点为4方法: 定义两个指针,一个快指针,一个慢指针,当快指针遍历到尾节点的时候,慢指针刚好遍历到中间的节点。 当节点个数为奇数时,中间节点只有一个,当节点个数为偶数时,慢指针指...原创 2019-06-25 10:28:30 · 2993 阅读 · 4 评论 -
【python自学笔记】(七)__slots__的作用
__slots__: 在Python中,每个类都有实例属性。默认情况下Python用一个字典来保存一个对象的实例属性。 然而,对于有着已知属性的小类来说,它可能是个瓶颈。这个字典浪费了很多内存。Python不能在对象创建时直接分配一个固定量的内存来保存所有的属性。因此如果你创建许多对象(我指的是成千上万个),它会消耗掉很多内存。不过还是有一个方法来规避这个问...转载 2019-06-16 17:22:35 · 2733 阅读 · 0 评论 -
【数据结构与算法】(五)链表转列表
def LtoL(linkedNode): l=[] while linkedNode: l.append(linkedNode.val) linkedNode= linkedNode.next return l[: : -1] //反转输出 关于列表的下标:b = a[i:j:...原创 2019-06-11 09:45:12 · 2581 阅读 · 0 评论 -
【Leetcode刷题篇】(十)两数相加(链表表示)
题目:https://leetcode-cn.com/problems/add-two-numbers/给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(...原创 2019-06-11 15:04:07 · 321 阅读 · 0 评论 -
【Leetcode刷题总结】(一)链表逆序
题目: 给定一个带头的链表,将其逆序输出。示例: 输入: head->1->2->3->4->None 输出: head->4->3->2->1->None 方法一:就地逆序 【注意】:1 链表的使用,只需要给出head节点就可以...原创 2019-07-28 21:42:38 · 591 阅读 · 0 评论 -
【python自学笔记】(六)Python列表内置函数
列表: 列表是Python最长用的一种数组类(连续空间存储)的数据结构。数组类包括列表(list),元组(tuple),字典(dict)以及字符串(str),以上数组类数据结构都可以用[ ] 返回其元素的索引。列表常用内置函数:list.append(x) 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 list.extend(L...原创 2019-06-14 16:10:55 · 353 阅读 · 0 评论 -
【Leetcode刷题篇】(十 一)无重复字符的最长子串
题目:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。class Solution: def lengthOfLongestSubstring(self, s: str) -> int:示例...原创 2019-06-13 16:26:35 · 184 阅读 · 0 评论 -
数据结构与算法(三) 栈
1 定义 栈(STACK)是一种数据结构,栈中的元素在插入和删除时遵循后进先出(last in first output)(LIFO)原则。2 应用场景 很多情况下都需要用到栈,比如: (1)浏览器的最近浏览地址,就存在栈中,当你点击返回后,就退回到最近打开的地址页面。 (2)文本编辑器的撤销机制。 (3)最直观...原创 2019-04-19 11:36:36 · 287 阅读 · 0 评论 -
数据结构与算法(一)递归
释义 递归就是函数自己调用自己,举个例子就是俄罗斯套娃。用途 递归提供了执行迭代任务的优雅并且强大的解决方案。要点 递归分为两部分,一部分是递归条件的定义,另一部分是终止条件的定义,在俄罗斯套娃中,递归条件就是空心的套娃内部含有套娃,而终止条件就是实心的套娃。分类 递归分为线性递归(每个递归调用一次自己),两路递归(每个递归中调用两次...原创 2019-04-16 10:49:55 · 456 阅读 · 0 评论 -
数据结构与算法(二)排序
1 插入排序 原理:从第二个元素开始,依次与前面的元素进行比较,如果第二个元素比前面的元素大,就不动,如果第二个元素比第一个元素小,就把第二个元素插入到第一个元素前面。依次从第二个元素一直到最后一个元素,进行同样的操作。 从原理上说,插入排序的速度受数列本身顺序影响大,如果数列本身已经排好序或者基本完成排序,则运行时间为O(n),如果数列初始化为反序,此时运行时...原创 2019-04-18 16:05:53 · 137 阅读 · 0 评论