[leetcode]Weekly Contest 68 (767. Reorganize String&&769. Max Chunks To Make Sorted&&768. Max Chunks To Make Sorted II)
766. Toeplitz Matrix
第一题不说,贼麻瓜,好久没以比赛的状态写题,这个题浪费了快40分钟,我真是。。。。。。
767. Reorganize String
就是给你一个字符串,能不能转换成:任意一个字符S[i],使得S[i-1]和S[i+1]都不等于S[i]。如果能输出,不能就输出一个空字符串。
大一的时候好像有印象,队友做出来的,贪心吧,如果遇到相邻两个一样的,就从后面找一个插到中间,具体原理我也不知道为什么,反正是对的,从头到尾扫一遍,再倒着来一遍,为什么要两边我也不知道,反正是对的。。。我也很凌乱啊!!!
class Solution {
public:
string reorganizeString(string S) {
int len = S.size();
string ts = S;
bool ans1 = true;
for(int i=;i<len;i++)
{
if(ts[i]==ts[i+]) {
if(i == len-) ans1 = false;
for(int j=i+;j<len;j++)
{
if(ts[j]!=ts[i] && ts[j]!=ts[i+])
{
swap(ts[j], ts[i+]);
break;
}
if(j == len-) {
ans1 = false;
}
}
}
}
string ts2 = ts;
reverse(ts2.begin(), ts2.end());
bool ans2 = true;
for(int i=;i<len;i++)
{
if(ts2[i]==ts2[i+]) {
if(i == len-) ans2 = false;
for(int j=i+;j<len;j++)
{
if(ts2[j]!=ts2[i] && ts2[j]!=ts2[i+])
{
swap(ts2[j], ts2[i+]);
break;
}
if(j == len-) {
ans2 = false;
}
}
}
}
if(ans1){
return ts;
}
else if(ans2) {
return ts2;
}
else {
return "";
}
}
};
769. Max Chunks To Make Sorted
给你一个序列,问你把这个序列分成n块,每个块单独排序,且排完序后和整体排序得到的结果要一模一样,求n的最大值
因为这个题说了,序列的内容是0——length-1,所以序列的内容唯一且连续
遍历序列从i到length-1,对前i的内容进行求最大值max,和最小值min,若在前i的序列中,min == 下标的最小值,max == 下标的最大值,即最小块,只是比赛时想到的,虽然也对,但太麻烦
class Solution {
public:
int maxChunksToSorted(vector<int>& arr) {
int ans = ;
int start = ;
while(start != arr.size()){
int min = arr[start], max = arr[start];
for(int end=start;end<arr.size();end++)
{
max = max>arr[end]?max:arr[end];
min = min<arr[end]?min:arr[end];
if(min == start&&max == end) {
ans ++;
start = end + ;
break;
}
}
}
return ans;
}
};
题解,只用求最大值就可以了,因为所以序列的内容唯一且连续,所以若arr[i]为最大值且 i == arr[i],则说明,小于 i的部分已经可以且一定顺序连续地排序
class Solution(object):
def maxChunksToSorted(self, arr):
ans = ma = 0
for i, x in enumerate(arr):
ma = max(ma, x)
if ma == i: ans += 1
return ans
768. Max Chunks To Make Sorted II
这是第二题的升级版
序列里的内容不一定(唯一且连续)了,其他都是一样的
我们来看一个特殊的序列1,1,0,0,1
对于正确的序列来说,是0,0,1,1,1
如果用上一种方法,那么到第三个数的时候,ans就要加一了
所以判断是否是最小且正确的块的时候,还要判断,前面出现的内容,和全部排好序的序列,是否一致
我在这里引入一个已遍历的序列和作为判断,这个算法的正确性,我还不得而知,我自己甚至认为可能不对,因为我数学学得是真的烂。。。。。。
希望若有人证明是正确的可以告诉我
class Solution:
def maxChunksToSorted(self, arr):
ans = 0
sum1 = 0
sum2 = 0
arr_pre_max = arr[0]
tarr = sorted(arr)
for x, y in zip(arr, tarr):
sum1 += x
sum2 += y
arr_pre_max = max(arr_pre_max, x)
if arr_pre_max == y and sum1 == sum2:
ans += 1
return ans
最后一题没做看起来很难的样子
[leetcode]Weekly Contest 68 (767. Reorganize String&&769. Max Chunks To Make Sorted&&768. Max Chunks To Make Sorted II)的更多相关文章
- 767. Reorganize String - LeetCode
Question 767. Reorganize String Solution 题目大意: 给一个字符串,将字符按如下规则排序,相邻两个字符一同,如果相同返回空串否则返回排序后的串. 思路: 首先找 ...
- LeetCode Weekly Contest 8
LeetCode Weekly Contest 8 415. Add Strings User Accepted: 765 User Tried: 822 Total Accepted: 789 To ...
- leetcode weekly contest 43
leetcode weekly contest 43 leetcode649. Dota2 Senate leetcode649.Dota2 Senate 思路: 模拟规则round by round ...
- LeetCode Weekly Contest 23
LeetCode Weekly Contest 23 1. Reverse String II Given a string and an integer k, you need to reverse ...
- Leetcode Weekly Contest 86
Weekly Contest 86 A:840. 矩阵中的幻方 3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等. 给定一个 ...
- LeetCode Weekly Contest
链接:https://leetcode.com/contest/leetcode-weekly-contest-33/ A.Longest Harmonious Subsequence 思路:hash ...
- 【LeetCode Weekly Contest 26 Q2】Longest Uncommon Subsequence II
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...
- 【LeetCode Weekly Contest 26 Q1】Longest Uncommon Subsequence I
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...
- LeetCode Weekly Contest 18B
1. 496. Next Greater Element I 暴力的话,复杂度也就1000 * 1000 = 1e6, 在1s的时限内完全可以. 当然,有许多优化方法,利用stack维护递减序列的方法 ...
随机推荐
- MySQL的binlog及关闭方法
如何关闭MySQL日志,删除mysql-bin.0000*日志文件 - VPS侦探https://www.vpser.net/manage/delete-mysql-mysql-bin-0000-lo ...
- Pseudo Registers
Pseudoregister Description @ERR Last error value; the same value returned by the GetLastError() API ...
- Es6数值拓展
Es6数值拓展 一,Number扩展 1,ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 将0b和0o前缀的字符串数值转为十进制,要使用Number方法 N ...
- Oracle 内存参数调优设置
Oracle 数据库系统中起到调节作用的参数叫初始化参数,数据库管理员根据实际情况需要适当调整这些 初始化参数以优化Oracle系统. 1 主要系统参数调优介绍 2 系统内存参数的分配 2.1 Ora ...
- [转帖]ODBC、OLEDB、ADO、ADO.NET
一文详解ODBC.OLEDB.ADO.ADO.NET之间的关系 2019年01月16日 21:28:38 LoveMIss-Y 阅读数:66更多 所属专栏: 白话C#高级编程 版权声明:本文为博主 ...
- [官网]CREATE EXTENSION PostGreSQL 创建函数的方法
CREATE EXTENSION https://www.postgresql.org/docs/current/sql-createextension.html CREATE EXTENSION — ...
- js发布订阅模式实现
//可以用于无相关页面或组件的事件.数据传递,减少在onShow中的业务,降低代码耦合 let events = {} /**订阅**/ function on(name, self, callbac ...
- table index & delete array item
table index & delete array item https://www.iviewui.com/components/table#ZDYLMB 编辑 row = { " ...
- qtp 自动货测试桌面程序-笔记(使用函数)
新建-function 写入函数 rem 关闭出现错误窗口Function checkExist() If Window("出现错误").WinObject("确定&qu ...
- SLAs-笔记
类型 sla status determined at time intervals over a timeline: average transaction response time errors ...