算法
你回到了你的家
这个作者很懒,什么都没留下…
展开
-
字符串-KMP算法
暴力解法:class Solution {public: int strStr(string haystack, string needle) { int lenh=haystack.length(); int lenn=needle.length(); int i=0; for(;i+lenn<=lenh;i++){ int j=0; for(;j<lenn;j++){原创 2022-05-27 17:41:07 · 69 阅读 · 0 评论 -
leetcode未整理合集
78class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ length=len(nums) if length==0: return [[]] n=nums.pop(-1) ret=self.sub原创 2021-09-29 16:07:25 · 132 阅读 · 0 评论 -
leetcode动态规划
Fibonacci数列:题目描述class Solution {public: int fib(int N) { int fib_array[100000]; fib_array[0]=0; fib_array[1]=1; for(int i=2;i<=N;i++){ fib_array[i]...原创 2019-11-21 07:37:28 · 196 阅读 · 0 评论 -
二进制位运算
一、数据大小首先记忆下Java各个数据所占的内存大小:boolen:1个字节int:4个字节float:4个字节double:8个字节char:2个字节byte:1个字节short:2个字节long:8个字节二、反转二进制数字假设需要倒转的数字是n倒转十进制整数:ans=ans*10+n%10n/=10当n是正数的时候,情况是相同的:ans=ans*2+n%2n/=2或者使用位运算:ans=(ans<<1)|(n&1)n>>1注原创 2020-10-29 07:21:51 · 252 阅读 · 0 评论 -
二分查找
二分查找并不简单,Knuth 大佬(发明 KMP 算法的那位)都说二分查找:思路很简单,细节是魔鬼。很多人喜欢拿整型溢出的 bug 说事儿,但是二分查找真正的坑根本就不是那个细节问题,而是在于到底要给 mid 加一还是减一,while 里到底用 <= 还是 <。如果没有正确理解这些细节,写二分查找肯定就是玄学编程,有没有bug只能靠菩萨保佑。接下来探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。而且,我们要深入细节,比如不等号是否应该带等号,mid是否应该加一等等。分析原创 2020-10-18 21:33:54 · 387 阅读 · 1 评论 -
leetcode回溯算法
result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择原创 2020-08-23 13:51:25 · 176 阅读 · 0 评论 -
map
Two Sumclass Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ans; unordered_map<int,int> M; int x; int len=nums.size(); for(int i=0;i<len;i++){.原创 2020-05-20 20:13:19 · 112 阅读 · 0 评论 -
背包问题
背包问题解法例题:https://www.nowcoder.com/practice/83800ae3292b4256b7349ded5f178dd1?tpId=40&tqId=21345&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking#include<iostream>...原创 2020-05-03 20:38:14 · 197 阅读 · 0 评论 -
DFS && BFS
DFS:100. Same Treeclass Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { if(!p&&!q){ return true; } if(p&&!q || q&&!p ||...原创 2020-04-21 08:02:52 · 291 阅读 · 0 评论 -
素数筛(快速筛)-爱拉托斯特尼筛法+欧拉筛
如果题目只需要判断少量数字是否为素数,那么可以直接枚举因子从2一直到sqrt(n),看能否整除,当判断的数量较大的,需要使用筛法进行处理。埃拉托斯特尼筛法:实例代码:#include<iostream>using namespace std;void make_prime(int n){ int prime[n]; int primes[100]; for(int ...原创 2020-04-07 16:25:41 · 429 阅读 · 0 评论 -
贪心算法 leetcode
455. Assign Cookiesclass Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) { int len_g=g.size(); int len_s=s.size(); sort(g.be...原创 2020-04-03 14:28:00 · 207 阅读 · 0 评论 -
leetcode string 类
1071. Greatest Common Divisor of Stringsclass Solution {public: string gcdOfStrings(string str1, string str2) { return recursive(str1,str2); } string recursive(string s1,string...原创 2020-03-18 22:53:12 · 205 阅读 · 0 评论