算法
Karate_Y
先努力让自己发光,对的人才能迎着光而来
展开
-
leetcode--盛水最多的容器(C++)
class Solution {public: int maxArea(vector<int>& height) { // 双指针 int max_area = 0; int left = 0; int right = height.size() - 1; while(left < right){ int tmp = min(height[left], height[.原创 2020-09-23 19:56:36 · 162 阅读 · 0 评论 -
leetcode--整数反转(C++)
class Solution {public: int reverse(int x) { // 反转结果 int rev = 0; while(x != 0){ // 取余 int pop = x % 10; x /= 10; // 防止溢出 if( rev > INT_MAX / 10 || (rev =.原创 2020-09-23 19:45:54 · 79 阅读 · 0 评论 -
leetcode--- Z型变换(C++)
class Solution {public: string convert(string s, int numRows) { if(numRows < 2){ return s; } vector<string> strs(numRows); int flag = -1; int start = 0; for(int i = 0; i < s.leng.原创 2020-09-23 19:39:15 · 101 阅读 · 0 评论 -
leetcode-- 最长回文子串(C++)
class Solution {public: // 做一下这个题目 // 最长回文子串 // 直观思路: DP // 状态转移方程是啥? // dp[i][j] 表示 s[i:j]的这个子串是否回文串 // 我们只能保证它是回文的时候记录它的长度 string longestPalindrome(string s) { if(s.length() == 0){ return s; } .原创 2020-09-23 19:13:07 · 119 阅读 · 0 评论 -
leetcode--三数之和(C++)
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { // 第一个,第二个,第三个都不能重复 // 排序加双指针 vector<vector<int>> res; sort(nums.begin(), nums.end()); // 固定首元素 .原创 2020-09-23 18:41:02 · 163 阅读 · 0 评论 -
leetcode--- 无重复字符的最长子串(C++)
滑动窗口法class Solution {public: int lengthOfLongestSubstring(string s) { int left = 0; int right = 0; int maxlen = 0; set<char> window; while(right < s.size()){ while(window.find(s[right])原创 2020-09-23 13:48:21 · 83 阅读 · 0 评论 -
leetcode--两数相加(C++)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListN.原创 2020-09-23 13:20:40 · 91 阅读 · 0 评论 -
leetcode- - 两数之和(C++)
一遍hashmap代码:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { // 一次hashmap map<int, int> m; for(int i = 0; i < nums.size(); i++){ if(m.find(target - nums[i]) !原创 2020-09-23 13:11:01 · 88 阅读 · 0 评论 -
跳跃游戏(python)
本篇文章记录一下leetcode 上"跳跃游戏"这两道题目第一道题目是要让我们判断是否可以跳到最后位置:我们可以遍历这个数组,然后更新可以跳到的最远位置,如果可以跳到最后,返回true,否则返回false。...原创 2020-09-08 20:02:32 · 888 阅读 · 0 评论 -
从快速排序到TopK问题 (Python)
快速排序class Solution: def quickSort(self, nums): # 递归函数 def quick_helper(left, right): if left >= right: return p = partition(left, right) quick_helper(left, p-1) quic原创 2020-09-07 14:13:33 · 674 阅读 · 0 评论 -
全排列问题引发的回溯思考
回溯问题其实就像是多叉树的遍历,有几个关键的点。一个是候选点列表的改变,一个是最终保存的结果。一个是路径。回溯的关键在于回退到上一步的状态。那么我们以全排列为切入点,理解一下回溯思想。我们以python为例:既然是多叉树的遍历,那么我们可以逐步缩小候选列表,也可以用剪枝的方式实现。剪枝的方式简单一些:剪枝:def permutation(nums): res = [] # 最终结果 # 路径: track # 候选列表: 动态变化 nums def原创 2020-08-07 15:54:33 · 211 阅读 · 0 评论 -
判断一个字符串数组中有多少个循环单词的个数
循环单词定义:str1:picturestr2 : turepicstr1 与str2 是循环单词代码:def func(strs): count = 0 flags = [False for _ in range(len(strs))] for i in range(len(strs)): for j in range(i+1, len(strs)): if flags[j] == True: ..原创 2020-08-06 15:45:54 · 312 阅读 · 0 评论