Leetcode
leetcode的题目
zou_albert
菜鸡程序员一个
展开
-
求解素数算法(leetcode有感而发)
总结了一些常见的判定素数和计算某个范围内素数个数的一些算法。1 简单判断素数算法根据定义,判断一个整数n是否是素数,只需要去判断在整数区间[2, n-1]之内,是否具有某个数m,使得n % m == 0。int isPrime(int n) { int i; for (i = 2; i < n; ++i) { if (n % i == 0) return 0; } return 1;}事实上,这个算法是O(n)的,感觉是很快了,但是有一个算法是O(sqrt(n))的算法。代码如转载 2020-07-10 15:29:47 · 784 阅读 · 3 评论 -
【leetcode】control may reach end of non-void lambda
sort(vec.begin(), vec.end(), [](const pair<char, int> &p1, const pair<char, int> &p2) { if (p1.second >p2.second) return p1.second >p2.second ; else if(p1.second ==p2.second ) return p1.first <p2.first; } );报错原创 2020-07-21 22:03:27 · 293 阅读 · 0 评论 -
C++中的unordered_map用法详解
1 简介unordered_map是一个将key和value关联起来的容器,它可以高效的根据单个key值查找对应的value。key值应该是唯一的,key和value的数据类型可以不相同。unordered_map存储元素时是没有顺序的,只是根据key的哈希值,将元素存在指定位置,所以根据key查找单个value时非常高效,平均可以在常数时间内完成。unordered_map查询单个key的时候效率比map高,但是要查询某一范围内的key值时比map效率低。可以使用[]操作符来访问key值对应的原创 2020-06-27 16:07:28 · 190338 阅读 · 21 评论 -
Leetcode:147. 对链表进行插入排序
class Solution {public:ListNode* insertionSortList(ListNode* head) { if (!head || !head->next) return head; ListNode *dummyhead = new ListNode(-1);//伪头指针 dummyhead->next = head; ListNode *prev = head; ListNode *node = head->next; while .转载 2020-06-26 15:40:52 · 110 阅读 · 0 评论 -
Leetcode 24. 两两交换链表中的节点
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* swapPairs(ListNode* head) { auto dummy=new ListNod转载 2020-06-26 13:04:54 · 73 阅读 · 0 评论 -
Leetcode 剑指 Offer 52. 两个链表的第一个公共节点
方法一:思路描述:最简单的方法是遍历两个链表,存储每个节点,然后发现是否有相同的节点,如果有则返回该节点。class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { unordered_map<ListNode*, int> nodes; ListNode* h1 = headA, *h2 = headB; whil转载 2020-06-24 16:29:39 · 111 阅读 · 0 评论 -
Leetcode 303. 区域和检索 - 数组不可变
方法一:单纯的暴力解决办法:时间超时的。class NumArray { vector<int> num;public: NumArray(vector<int>& nums) { for(int i=0;i<nums.size();i++) { num.push_back(nums[i]); } } int sumRange(int i, int j转载 2020-06-24 16:04:27 · 79 阅读 · 0 评论 -
每天一道LeetCode-----判断链表是否有环,如果有,找到环的入口位置
每天一道LeetCode-----判断链表是否有环,如果有,找到环的入口位置转载 2020-06-24 09:29:28 · 159 阅读 · 0 评论 -
【算法】如何判断链表有环
【算法】如何判断链表有环转载 2020-06-24 09:27:51 · 91 阅读 · 0 评论 -
Leetcode-53. 最大子序和
方法一:分治法(处理线段树的)class Solution {public: int maxSubArray(vector<int>& nums) { return findMax(nums, 0, nums.size()-1); } // 分治算法求解 // 思路就是把这个问题分成三部分:1、求左边[0, middle-1]这个闭区间部分的max;2、求右边[middle+1, nums.size()-1]这个闭区间部分的max;原创 2020-06-17 20:43:53 · 82 阅读 · 0 评论 -
leetcode 121. 买卖股票的最佳时机
参考链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/gu-piao-wen-ti-python3-c-by-z1m/对于dp的问题归纳的总结。在文章中的体现的。方式一:class Solution: def maxProfit(self, prices: List[int]) -> int: minprice = float('inf') maxpro转载 2020-06-16 21:40:37 · 82 阅读 · 0 评论 -
Leetcode 1025. 除数博弈
方法一:动态规划解题思路博弈游戏,定义必胜态和必败态。当一个状态能够达到的状态中有必败态,则当前状态为必胜态当一个状态能够达到的所有状态都是必胜态,则当前状态为必败态。首先设置dp(N)为先手在N的时候的输赢,由于x是任选的(对最终的输赢没有影响),因此可以直接使用x=1来作为每次的选择结果。只要N大于1,那么其输赢总归决定于后者,状态转移为dp(N) = ~dp(N-1)。class Solution {public: bool divisorGame(int N) {原创 2020-06-15 21:41:33 · 176 阅读 · 0 评论 -
Leetcode: 392. 判断子序列
时间复杂度:O(n)方法一:直接O(n)class Solution {public: bool isSubsequence(string s, string t) { if(s.size()==0) return true; int a = 0; for(int i=0;i<t.size();i++){ if(s[a] == t[i]) a++;原创 2020-06-15 09:43:44 · 118 阅读 · 0 评论 -
LeetCode:reference binding to null pointer of type value_type
https://blog.csdn.net/m0_38088298/article/details/79249044转载 2020-06-15 09:35:47 · 204 阅读 · 0 评论