![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
sinat_15355869
这个作者很懒,什么都没留下…
展开
-
Find if there is a path between two vertices in an undirected graph
如图:python bfs 预热 (简单粗暴)# 无向图的的两个节点是否相连 ~ :from collections import dequedef addEdge(v, w): global adj adj[v].append(w) adj[w].append(v)def isReachable(s, d, V): if (s == d): return True visited = [False for i in range原创 2022-02-06 01:12:27 · 608 阅读 · 0 评论 -
Find if there is a path between two vertices in a directed graph
基础遍历预热#include <iostream>#include <vector>#include <stack>#include <algorithm>using namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x): val(x), left(nullptr), right(..原创 2022-02-04 19:05:10 · 708 阅读 · 0 评论 -
20 - searching and sorting
Binary search xx1. Binary searchBinarySearch.cpp//// Created by on 2021/7/28.//// BinarySearch#include <algorithm>#include <array>#include <ctime>#include <iostream>#include <random>using namespace std原创 2021-07-29 07:50:19 · 98 阅读 · 0 评论 -
leetcode 300 最长上升子序列
题目:答案:class Solution: def lengthOfLIS(self, nums: List[int]) -> int: if not nums: return 0 tail, res = [0]*len(nums), 0 for num in nums: i, j = 0, res while i < j: m = (i + j)原创 2020-05-28 19:15:52 · 107 阅读 · 0 评论 -
python-排序&优化
# arr = [1, 3, 5, 7, 2, 4, 6, 8]arr = [3, 4, 2, 1, 5, 6, 7, 8]def bubble_sort0(arr): """方法一:最粗糙的 冒泡排序,每次循环把最大的数放在最后, 28次""" compare_count = 0 length = len(arr) for i in range(length - 1): for j in range(length - 1 - i): ..转载 2020-05-15 10:13:10 · 224 阅读 · 0 评论 -
中文分词算法 - 正向最大匹配 - 逆向最大匹配
记录下:????转:【1】中文分词算法:逆向最大匹配法【2】中文分词--最大正向与逆向匹配算法python实现逆向 & 正向:class RMM(object): def __init__(self, dic_path): self.dictionary = set() self.maximum = 0 # 读取......原创 2020-03-21 14:41:31 · 992 阅读 · 0 评论 -
二叉树复习 & 重建二叉树 & 树的子结构 & 二叉树的镜像 & 从上往下打印二叉树 & 二叉树中和为某一值的路径 & 二叉树搜索与双向链表 & 二叉树的下一个节点 & 对称的二叉树 &之形印二叉树
二叉树复习各种遍历后结果pre:12453687mid:42516837last:45286731class TreeNode: def __init__(self, val): self.val = val self.left = None self.right = Nonedef pre_recursion_...原创 2020-02-13 12:18:08 · 418 阅读 · 0 评论 -
链表中倒数第k个节点 & 反转链表 & 合并两个排序链表 & 两个链表的第一个公共节点 & 链表中环的入口节点 & 删除链表中的重复元素 & 复杂链表的复制
逐渐成为灵魂画手[doge]。。复习链表:链表中倒数第k个节点class Solution: def FindKthToTail(self, head, k): # write code here, 快慢指针,k是两个指针的相对固定举例,当快指针到达None,慢指针就是结果 first = head second =...原创 2020-02-11 08:03:50 · 196 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
【转】参考:https://blog.csdn.net/besmarterbestronger/article/details/94960879题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变复习冒泡排序:def maopao(array): ...原创 2020-02-10 01:07:00 · 85 阅读 · 0 评论 -
数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0注意:1)分情况,当指数小于0的时候,需要计算的是 大于0的指数幂然后倒数2)大于0 的情况下,注意0, 1的边界条件方法一:迭代class Solution: def Power(self, base, expon...原创 2020-02-09 13:27:21 · 100 阅读 · 0 评论 -
二进制中1的格式
复习:[转]补码原理——负数为什么要用补码表示代码:class Solution: def NumberOf1(self, n): # write code here count = 0 while n & 0xffffffff !=0: n = n & (n-1) ...原创 2020-02-09 11:44:12 · 744 阅读 · 0 评论 -
旋转数组的最小数字
复习 二分查找:def binarysearch(array, target): """二分查找""" src = 0 dst = len(array)-1 while src <= dst: mid = (src + dst) >> 1 if array[mid] == target: ...原创 2020-02-06 11:46:42 · 89 阅读 · 0 评论 -
跳台阶 & 变态跳台阶
跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。import timeclass Solution: def jumpFloor(self, number): # 递归的方法 if number == 1: return 1 e...原创 2020-02-04 20:39:41 · 125 阅读 · 2 评论 -
斐波那契数列
对比下两种方法呗:import timeclass Solution1: def Fibonacci(self, n): # write code here if n == 0: return 0 if n == 1: return 1 return self.Fibo...原创 2020-02-03 16:17:09 · 130 阅读 · 0 评论 -
503. 下一个更大元素 II
题目:解答:class Solution: def nextGreaterElements(self, nums: List[int]) -> List[int]: stk = nums[::-1] ans = [-1 for _ in range(len(nums))] sz = len(nums) - 1 ...原创 2019-12-31 09:17:49 · 104 阅读 · 0 评论 -
496. 下一个更大元素 I
题目:解答: 遍历nums2,维护一个递减栈 当得到一个更大的数的时候,将栈里小于它的数都放到哈希表当中 举例来说,如果nums2里是3,2,1,4,那么栈前三位都是3,2,1,当遍历到4的时候,发现4比1大,这时候,哈希表里要添加hashmap[1] = 4,hashmap[2] = 4,hashmap[3] = 4。含义是,对于1这个数字而言,右边第一个比它大的数...原创 2019-12-31 08:55:25 · 80 阅读 · 0 评论 -
1047. Remove All Adjacent Duplicates In String
题目答案:原创 2019-12-27 00:14:09 · 101 阅读 · 0 评论 -
42.接雨水
题目:解答:原创 2019-12-25 09:21:59 · 157 阅读 · 0 评论 -
448. Find All Numbers Disappeared in an Array
题目:解答:????哎,效果太差class Solution: def findDisappearedNumbers(self, nums): """注意使用 abs 因为如果出现两个相同的数字,那么进行负号转换,负负得正,这不是我们希望看到的 最后输出的时候,记得index要加回去1,是题目要求第几个,第几个 不是从0开始计数 ...原创 2019-12-19 22:10:05 · 90 阅读 · 0 评论 -
560. 和为K的子数组
题目:感觉题目越短,越不容易,我去解答:class Solution: def subarraySum(self, nums, k): """效果最好的版本""" _dict, cur, count = {0: 1}, 0, 0 for v in nums: cur += v ...原创 2019-12-19 01:09:57 · 92 阅读 · 0 评论 -
287. 寻找重复数
题目:https://leetcode-cn.com/problems/find-the-duplicate-number/solution/解答:class Solution: def findDuplicate(self, nums: List[int]) -> int: aa = sorted(nums) for i in r...原创 2019-12-18 08:45:16 · 91 阅读 · 0 评论 -
1137. 第 N 个泰波那契数
题目https://leetcode-cn.com/problems/n-th-tribonacci-number/解答:# @TIME : 2019/11/1 上午8:06# @File : 第 N 个泰波那契数_1137.py"""泰波那契序列Tn定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0的条件下 Tn+3 =...原创 2019-11-01 09:12:01 · 342 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
题目:解答: 贪心(速度要快) 、 动态规划(这里需要好好理解下)class Solution: def maxProfit1(self, prices): """贪心算法""" rel = 0 for i in range(len(prices)-1): if prices[i+1] > p...原创 2019-10-19 16:43:02 · 76 阅读 · 0 评论 -
350. 两个数组的交集 II
题目:解答 (普通人):class Solution: def intersect(self, nums1, nums2): """排序后 双指针操作""" nums1.sort() nums2.sort() i = 0 j = 0 rel = [] while i...原创 2019-10-19 11:00:51 · 86 阅读 · 0 评论 -
349. 两个数组的交集
题目:自己的代码(普通人是这样写的):O(m*n)# @TIME : 2019/10/17 上午00:53# @File : 两个数组的交集_349.py"""给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2...原创 2019-10-17 01:04:09 · 78 阅读 · 0 评论 -
703. 数据流中的第K大元素
题目:思路:维护一个最小堆,只保留需要的那前K个元素,利用nlargest 然后倒序排列,堆顶是最小就是K个元素中需要的答案,每次添加元素(更新堆操作):当外部数值val < 堆顶元素时候,忽略不用管,因为它不会造成结果变化(前K个数字不受影响),当val>堆顶元素时候,需要heapreplace 踢出最小值,插入新的值,然后heapify新的值最后结果,弹出最小值...原创 2019-10-15 07:43:05 · 157 阅读 · 0 评论 -
56. 合并区间
题目:解答:class Solution: """想法很简单,先排序,然后对比第一个元素的[1] 与 第二个元素的[0] 进行合并""" def merge(self, intervals): if intervals == []: return [] intervals = sorted(intervals, ...原创 2019-09-13 09:40:41 · 84 阅读 · 0 评论 -
75. 颜色分类
题目:解答方法一(自己????):时间复杂度O(N) 空间复杂度O(1)class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. 不能新建空间...原创 2019-09-13 22:38:04 · 152 阅读 · 0 评论 -
堆排序-python3
# @TIME : 2019/10/10 上午7:25# @File : 堆排序.py"""堆排序,顾名思义,就是基于堆。因此先来介绍一下堆的概念。堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有了上面的定义,我们可以得知,处于最大堆的根节点的元素一定是这个堆中的...原创 2019-10-10 08:11:22 · 145 阅读 · 0 评论 -
215. 数组中的第K个最大元素
题目:【方法一&二】时间复杂度:O(N*logk), 向大小为k的堆中添加元素的时间复杂度为O(logk),我们将重复该操作N次空间复杂度:O(k) 用于存储k个堆元素自己解答(速度太慢?有待提高):# @TIME : 2019/10/9 下午01:04# @File : 数组中第K大元素_215.py"""在未排序的数组中找到第 k 个最...原创 2019-10-10 09:30:25 · 138 阅读 · 0 评论 -
python132 pattern
【转】456. 132 Pattern 解题报告(Python作者:负雪明烛秀啊!题目:解答:def find(nums): if len(nums) <=2: return False third = float('-inf') stack = [] for i in range(len(nums)-...转载 2019-07-25 15:48:13 · 107 阅读 · 0 评论 -
python 计算器(四则运算)
学习来自:https://www.cnblogs.com/zingp/p/8666214.html 感谢!思路:考虑的四则运算符号 : ["+", "-", "*", "/", "(", ")"] 获取表达式字符串 --》表达式切分 (请注意区分 减号"-", 与负号"-" ) --》 先出初切: formula_list = [i for i in re.split...原创 2019-04-11 20:22:21 · 8672 阅读 · 1 评论 -
225. 用队列实现栈 & 用栈实现队列
题目:答案:class MyStack: def __init__(self): """ Initialize your data structure here. """ self.stack = [] def push(self, x: int) -> None: """ ...原创 2019-09-09 08:28:51 · 120 阅读 · 0 评论 -
88. 合并两个有序数组
题目:代码:# @TIME : 2019/9/1 下午5:00# @File : Merge_sorted_array_88.py"""[easy]给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设...原创 2019-09-01 18:25:01 · 124 阅读 · 0 评论 -
SequenceMatcher python
最近遇到 类似:Maximum Length of Repeated Subarray 问题:发现两类解法,都认真看了一波,有点意思!1)LeetCode 781 --> 很多做法是基于 创建二维数组 --> 动态规划 --> 思路清晰,代码简短而又原创 2019-06-15 16:38:18 · 2687 阅读 · 0 评论 -
53-最大自序和
题目:解答class Solution: def maxSubArray(self, nums: List[int]) -> int: for i in range(1, len(nums)): nums[i] = nums[i] + max(nums[i-1], 0) return max(nums)...原创 2019-04-24 08:49:40 · 119 阅读 · 0 评论 -
报数 - 38
学习来自 网上各位大神,if侵 return删 else pass题目:解答一: 使用 itertools方式 "".join()import itertoolsclass Solution: def countAndSay(self, n: int) -> str: s = "1" for _ in range...原创 2019-04-12 22:44:35 · 100 阅读 · 0 评论 -
搜索插入位置 35
题目:自己的垃圾代码: 用了好几个for,原创 2019-04-12 21:21:26 · 71 阅读 · 0 评论 -
删除数组中的重复项 26
题目:答案:import timeclass Solution: def removeDuplicates(self, nums) -> int: i = 0 while i < len(nums) -1: if nums[i] == nums[i + 1]: d...原创 2019-04-09 07:57:48 · 91 阅读 · 0 评论 -
21 合并有序链表
题目:答案:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def mergeTwoLists(self, l1: Li...原创 2019-04-09 07:27:18 · 64 阅读 · 0 评论