
LeetCode与数据结构
Arthur-Ji
不要崇拜,不要自卑
不要盲目相信高势能
不要随波逐流
脚踏实地
展开
-
hoj 1062 数列极差问题(数学+贪心)
hoj 1062 数列极差问题(数学+贪心)发表评论在黑板上写了N个正整数组成的一个数列,进行如下操作: 每次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上 剩下一个数,在所有按这种操作方式最后得到的数中,最大的为max,最小的为min, 则该数列的极差定义为M=max-min。请你编程,对于给定的数列,计算极差。输入输入包含多个测试集。每个测试...转载 2019-11-07 21:00:56 · 566 阅读 · 0 评论 -
穿越沙漠问题,飞机加油问题____递推
一、问题描述一辆吉普车来到1000km宽的沙漠边沿。吉普车的耗油量为1L/km,总装油量为500L。显然,吉普车必须用自身油箱中的油在沙漠中设几个临时 加油点,否则是通不过沙漠的。假设在沙漠边沿有充足的汽油可供使用,那么吉普车应在哪些地方、建多大的临的加油点,才能以最少的油耗穿过这块沙漠?二、问题分析本题是一个极值问题,要求具有最小的油耗。因此,它的解是唯一的。吉普车在沙漠中建临时...转载 2019-11-07 19:35:36 · 544 阅读 · 0 评论 -
连续邮资问题
连续邮资问题 假设某国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮箱问题要求对于给定的n和m,给出邮票面值的最佳设计,在1张信封上贴出从邮资1开始,增量为1的最大连续邮资区间。 例如当n=5,m=4时,面值为1,3,11,15,32的5种邮票可以贴出邮资的最大连续区间是1到70。解:连续邮资问题:根据题意,要求找到从1...原创 2019-11-05 11:57:03 · 2103 阅读 · 0 评论 -
Leetcode周赛161 ——5247. 交换字符使得字符串相同
贪心消消乐,上x下y的结构以及上y下x的结构,其中2+2的结构使用俩次就能够换掉某一结构2个的也能使用一次换掉,1+1的结构只能通过俩次换掉’class Solution {public: int minimumSwap(string s1, string s2) { int xy = 0, yx = 0;//统计同一位置,上面x下面y以及上面y下面x的结构 ...原创 2019-11-03 11:31:41 · 284 阅读 · 0 评论 -
Leetcode双周赛12场 5096. 数组变换
这个每次都是得一块变化的,不是一个个的变化过去的,后一天基于前一天,暴力吧class Solution {public: vector<int> transformArray(vector<int>& arr) { int flag = 1; vector<int> temp = arr; w...原创 2019-11-02 23:10:11 · 150 阅读 · 0 评论 -
Leetcode160周赛 5240. 串联字符串的最大长度
class Solution {public: int maxLength(vector<string>& arr) { int n=arr.size(); int ans=0; for(int s=1; s<1<<n; s++){ bool vis[26]={0}; ...原创 2019-10-28 14:17:40 · 328 阅读 · 0 评论 -
Leetcode160周赛5239. 循环码排列
class Solution {//其实就是格雷码的计算,但是指定了开始的数字,我暂时只想到了这个笨办法,就是遇到了start之后,再将之后的值加进来 public List<Integer> circularPermutation(int n, int start) { int count = (int)Math.pow(2,n); int ...原创 2019-10-27 11:53:49 · 230 阅读 · 0 评论 -
Leetcode160周赛 5238. 找出给定方程的正整数解
https://leetcode-cn.com/contest/weekly-contest-160/problems/find-positive-integer-solution-for-a-given-equation/""" This is the custom function interface. You should not implement it, or spe...原创 2019-10-27 10:59:19 · 311 阅读 · 0 评论 -
连续子数组的最大和
原创 【剑指Offer学习】【面试题31:连续子数组的最大和】 ...转载 2019-10-25 16:14:25 · 185 阅读 · 0 评论 -
0/1背包问题——动态规划、回溯、分支限界法对比
0/1背包问题——动态规划、回溯、分支限界法对比2017.12.19 20:42:02字数 3713阅读 2820目录1.问题描述1.1 问题描述1.2 问题的数学表示(规划类问题,此种表示可以转换为回溯法)1.3 三种方法的比较2.动态规划2.1 刻画一个最优解的结构特征(最优子结构)2.2 递归地定义最优解的值(重叠子问题)2.3 计算最优解的值,通常采用自底向上的方法2....转载 2019-10-25 15:43:18 · 6631 阅读 · 0 评论 -
【贪心算法】贪心算法与活动安排问题
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本...转载 2019-10-25 15:22:47 · 889 阅读 · 0 评论 -
动态规划:数塔问题
动态规划问题我训练过一些题目,但是感觉自己掌握的还不是特别好! 下面以一道经典的动态规划题目说明动态规划算法的思想,文末会官方的给出...转载 2019-10-25 15:10:52 · 590 阅读 · 0 评论 -
最短路径算法——弗洛伊德(Floyd)算法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-10-25 14:42:44 · 1480 阅读 · 0 评论 -
【动态规划】01背包问题(通俗易懂,超基础讲解)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本...转载 2019-10-25 13:16:20 · 181 阅读 · 0 评论 -
动态规划,最优二分检索树
最优二分检索树最优二分检索树问题:求一棵使得预期成本最小的二分检索树一、问题引出 或是一棵空树;或者是具有如下性质的非空二叉树:(1)左子树的所有结点均小于根的值;(2)右子树的所有结点均大于根的值;对于一个给定的标识符集合,可能有若干棵不同的二分检索树:不同形态的二分检索树对标识符的检索性能是不同的。设给定的标识符集合是{a1,a2,…,an},并假...转载 2019-10-25 10:21:23 · 3112 阅读 · 1 评论 -
[图算法]多段图最短路径
[图算法]多段图最短路径多段图最短路径问题是应用动态规划的经典问题之一,许多优化问题都能转化为多段图最短路径问题进而求解。多段图最短...转载 2019-10-24 14:53:29 · 2228 阅读 · 0 评论 -
C++ Merge sort(归并排序)
归并排序(merge sort)是一个时间复杂度为O(nlogn)的基于比较的排序算法(comparison based sorting algorithm)。 归并排序大多...转载 2019-10-24 11:09:19 · 1354 阅读 · 0 评论 -
子集树与排列树
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本...转载 2019-10-23 10:23:57 · 421 阅读 · 0 评论 -
Leetcode3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...原创 2019-10-22 21:45:19 · 167 阅读 · 0 评论 -
Leetcode 2. 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2019-10-21 21:36:17 · 131 阅读 · 0 评论 -
Leetcode 136. 只出现一次的数字
https://leetcode-cn.com/problems/single-number/solution/zhi-chu-xian-yi-ci-de-shu-zi-by-leetcode/class Solution(object): def singleNumber(self, nums): """ :type nums: List[i...原创 2019-08-23 22:57:48 · 323 阅读 · 0 评论 -
Leetcode 524.通过删除字母匹配到字典里最长单词 ——sort
class Solution {public: string findLongestWord(string s, vector<string>& d) { sort(d.begin(), d.end(), [](string a, string b){//重写sort if (a.size() == b.size())...原创 2019-07-29 21:52:03 · 330 阅读 · 0 评论 -
Leetcode 538. 把二叉搜索树转换为累加树
# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def convertBST...原创 2019-08-26 23:27:26 · 312 阅读 · 0 评论 -
Leetcode 56.合并区间——Sort
class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { if (intervals.empty()) return {}; sort(intervals.begin(), int...原创 2019-07-30 23:59:36 · 313 阅读 · 0 评论 -
Leetcode 274 H指数
class Solution {public: int hIndex(vector<int>& citations) { sort(citations.begin(), citations.end(), greater<int>()); for (int i = 0; i < citations.size()...原创 2019-08-02 22:35:53 · 325 阅读 · 0 评论 -
LeetCode 148. 排序链表
https://github.com/grandyang/leetcode/issues/148常见排序方法有很多,插入排序,选择排序,堆排序,快速排序,冒泡排序,归并排序,桶排序等等。。它们的时间复杂度不尽相同,而这里题目限定了时间必须为O(nlgn),符合要求只有快速排序,归并排序,堆排序,而根据单链表的特点,最适于用归并排序。为啥呢?这是由于链表自身的特点决定的,由于不能通过坐标来直...转载 2019-07-25 11:29:54 · 220 阅读 · 0 评论 -
链表 leetcode题目总结 c++
链表链表和数组最大的区别在于,链表不支持随机访问,不像数组可以对任意一位的数据进行访问,链表只能从头一个一个往下访问,寻找下一个元素,像穿针引线似的。也正因为链表的这种特点,增大了链表题目的难度。本文主要讨论的是单链表,单链表中的链表结点结构体定义如下struct ListNode { int val; ListNode *next; Lis...转载 2019-07-25 10:34:50 · 807 阅读 · 0 评论 -
Leetcode 350. 两个数组的交集 II——Sort
这道题是之前那道Intersection of Two Arrays的拓展,不同之处在于这道题允许我们返回重复的数字,而且是尽可能多的返回,之前那道题是说有重复的数字只返回一个就行。那么这道题我们用哈希表来建立nums1中字符和其出现个数之间的映射, 然后遍历nums2数组,如果当前字符在哈希表中的个数大于0,则将此字符加入结果res中,然后哈希表的对应值自减1class Solutio...原创 2019-07-24 20:28:48 · 288 阅读 · 0 评论 -
Leetcode 242. 有效的字母异位词——Sort
使用哈希表映射,我们还是用一个数组来代替哈希表我们先判断两个字符串长度是否相同,不相同直接返回false。然后把s中所有的字符出现个数统计起来,存入一个大小为26的数组中,因为题目中限定了输入字符串为小写字母组成。然后我们再来统计t字符串,如果发现不匹配则返回false。class Solution {public: bool isAnagram(string s, str...原创 2019-07-24 20:11:27 · 413 阅读 · 0 评论 -
Leetcode 349. 两个数组的交集——Sort
这道题让我们找两个数组交集的部分(不包含重复数字),难度不算大,我们可以用个set把nums1都放进去,然后遍历nums2的元素,如果在set中存在,说明是交集的部分,加入结果的set中,最后再把结果转为vector的形式即可:class Solution {public: vector<int> intersection(vector<int>&...原创 2019-07-24 19:42:18 · 346 阅读 · 0 评论 -
Leetcode 922. 按奇偶排序数组 II——Sort
class Solution {public: vector<int> sortArrayByParityII(vector<int>& A) { vector<int> res(A.size()); int OddIndex = 1, EvenIndex = 0; for(auto a :...原创 2019-07-24 19:36:07 · 300 阅读 · 0 评论 -
Leetcode 767 重构字符串 ——sort
class Solution {public: string reorganizeString(string S) { int n = S.size(), idx = 1; vector<int> cnt(26, 0); for (char c : S) cnt[c - 'a'] += 100; for...原创 2019-08-04 23:24:03 · 359 阅读 · 0 评论 -
Leetcode 147. 对链表进行插入排序
https://leetcode-cn.com/problems/insertion-sort-list//** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NU...原创 2019-07-27 23:26:45 · 262 阅读 · 0 评论 -
Leetcode 206. 反转链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -&...原创 2019-08-22 23:24:31 · 276 阅读 · 0 评论 -
Leetcode周赛150,拼写单词,最大层内元素和,地图分析,按字典序排在最后的子串
https://leetcode-cn.com/contest/weekly-contest-150class Solution: def countCharacters(self, words: List[str], chars: str) -> int: data = [collections.Counter(i) for i in words]#分别统...原创 2019-08-18 13:14:58 · 482 阅读 · 0 评论 -
Leetcode 21. 合并两个有序链表
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def mergeTwoLists(self, l1: ListNode, l2: ...原创 2019-08-25 21:03:54 · 318 阅读 · 0 评论 -
Leetcode 169. 求众数
class Solution: def majorityElement(self, nums): nums.sort() return nums[len(nums)//2]class Solution: def majorityElement(self, nums): count = 0 ...原创 2019-08-24 23:10:43 · 284 阅读 · 0 评论 -
Leetcode 104. 二叉树的最大深度
思路:递归遍历就行了# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: de...原创 2019-08-19 22:59:36 · 259 阅读 · 0 评论 -
Leetcode 226. 翻转二叉树
思路就是递归,比较好理解的# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: ...原创 2019-08-19 22:44:08 · 281 阅读 · 0 评论 -
Leetcode 461. 汉明距离
基础算法:class Solution: def hammingDistance(self, x: int, y: int) -> int: val = 0 while(x or y): if(x % 2 != y % 2): val += 1 x //= 2...原创 2019-08-19 22:28:51 · 303 阅读 · 0 评论