leetcode
Melody_HUNNU
SE在读蒟蒻,找不到工作,担心没有书读。
展开
-
leetcode 697. 数组的度
20210220 每日一题节后复健思路:简单暴力,因为数据范围很小所以直接开50000大小的三个数组就可以了,一个记录某个数第一次出现的地点,一个记录当前最后一次出现的地点,一个记录该数出现的次数。只需要考虑一次循环中间,更新最大次数的时候记录最小长度作为答案就可以了。class Solution {public: int first[50000],last[50000],app[50000]; int maxlen=0,ans=500000; int findShortes原创 2021-02-20 12:07:58 · 93 阅读 · 0 评论 -
Leetcode 1423. 可获得的最大点数
20210206 每日一题思路:比较简单的想法是无论是选多少个,都是左边连续选一部分,右边连续选一部分。提前算好从左到右和从右到左的前缀和,然后只要遍历一遍左边连续选多少就可以了。代码:class Solution {public: int maxScore(vector<int>& cardPoints, int k) { vector<int> lsum,rsum; int len = cardPoints.size();原创 2021-02-06 11:54:41 · 118 阅读 · 0 评论 -
Leetcode 1208. 尽可能使字符串相等
20210206 每日一题 滑动窗口思路:比较简单的滑动窗口的题目。只要一路从左向右滑,设置两个指针就好了,一左一右。超标时左指针向右滑动到合适范围即可。代码:class Solution {public: int equalSubstring(string s, string t, int maxCost) { int ans=0; int current=0; int len=s.length(); int left=0,r原创 2021-02-06 11:27:15 · 114 阅读 · 0 评论 -
Leetcode 424. 替换后的最长重复字符
20210202 每日一题思路:一维的滑窗,考虑从左到右滑动,一旦不符合条件的时候,从左收缩窗口大小。困惑:后面看了一下官方题解,为什么答案可以在外面维护,直接返回。代码:class Solution {public: int characterReplacement(string s, int k) { int maxn = 1; int left=0; int right=0; int num[26];原创 2021-02-02 14:33:13 · 104 阅读 · 0 评论 -
Leetcode 888. 公平的糖果棒交换
20210201 每日一题思路:很简单的题目。列一下数学式子就可以了。sumA-x+y=sumB+x-y。sumA是Alice的和,sumB是Bob的和,x是Alice给出的值,y是Bob给出的值。然后就只要循环A数组或者B数组,看另一方数组有无符合的值。用二分的话,复杂度应该是nlgn。代码:class Solution {public: vector<int> fairCandySwap(vector<int>& A, vector<int>&原创 2021-02-01 16:04:19 · 86 阅读 · 0 评论 -
Leetcode 724. 寻找数组的中心索引
20210128每日一题题面:找到数组中的一个位置,左边和等于右边和。思路:想法比较简单暴力,从左累加一遍,从右累加一遍,顺便判断哪个位置右边的累加和等于左边的就好了(不要忘记考虑n-1作为答案的效果)。然后处理一下特殊情况,比如n=0。代码:class Solution {public: int pivotIndex(vector<int>& nums) { int sumleft[10000+10],sumright[10000+10];原创 2021-01-28 06:24:50 · 122 阅读 · 0 评论 -
Leetcode 1579. 保证图可完全遍历
20210127 每日一题题面:给定3种边,type3是AB都能走的,1是只能A走,2是只能B走。问在保持图联通的情况下,最多可以删掉多少边。思路:type3是最好的,所以优先考虑type3中有多少边可以保留。如果走完type3已经连通了,那么直接返回答案就好了。(type3中不重要的边和其他两种边。)如果此时图不连通,那么就单独考虑A和B,它们各自的情况就是一个独立空间下type3的问题,只不过此时type变成了1或2.然后反思一下:我写的真的太太太冗余了,需要再好好写一下。垃圾代码:class原创 2021-01-27 21:05:42 · 66 阅读 · 0 评论 -
Leetcode 1128. 等价多米诺骨牌对的数量
20210126 每日一题题面:给你一个由一些多米诺骨牌组成的列表 dominoes。如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 ac 且 bd,或是 ad 且 bc。在 0 <= i < j < dominoes.length 的前提下,找出满足 dominoes[i] 和 dominoes[j] 等价的骨原创 2021-01-26 07:14:04 · 155 阅读 · 0 评论 -
959. 由斜杠划分区域
2021-1-25 每日一题在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。返回区域的数目。思路:首先需要思考题目转换,这是求连通块个数的题目。因为是连通块个数问题,所以用并查集解决。然后就只要考虑几个问题就好了:1.最小单位应该是多大?这里应该是一个单位的正方形被X划分成四个部分。把单位取的尽可能小,这样的话斜杠和反斜杠的情况比较容易统一。2.怎么合并?2.1 单位正方形内的合并。此正方形对原创 2021-01-25 09:12:41 · 117 阅读 · 0 评论