763.划分字母区间(代码片段)

yonezu yonezu     2022-12-05     386

关键词:

技术图片

 

方法一:滑动窗口

class Solution 
    public List<Integer> partitionLabels(String s) 
        List<Integer> res = new ArrayList<>();
        int[] arr = new int[128];
        for(char c : s.toCharArray()) 
            arr[c]++;
        
        int[] window = new int[128];
        int n = s.length(), i = 0, j = 0, sumChar = 0, count = 0;
        while(j < n) 
            char c = s.charAt(j++);
            if(window[c] == 0) sumChar++;  
            if(++window[c] == arr[c]) count++;
            if(sumChar == count) 
                res.add(j - i);
                i = j;
                sumChar = 0;
                count = 0;
            
        
        return res;
    

方法二:贪心,考虑好每个字符的最远出现位置

class Solution 

    public List<Integer> partitionLabels(String s) 
        List<Integer> res = new ArrayList<>();
        int[] arr = new int[26];  // 存储每个字符最后一个位置
        for(int i = 0; i < s.length(); i++) 
            arr[s.charAt(i)-‘a‘] = i;
        
        int start = 0,  j = 0;
        for(int i = 0; i < s.length(); i++) 
            j = Math.max(j,arr[s.charAt(i)-‘a‘]);// j为当前遍历字符的最远的位置
            if(i == j)  // 当前包含所有已遍历字符就可以加入
                res.add(i - start + 1);
                start = i + 1;
            
        
        return res;
    

 

763.划分字母区间(代码片段)

...       字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例:输入:S="ababcbacadefegdehijhklij"输出:... 查看详情

leetcode763.划分字母区间贪心策略:局部最优大区间划分(代码片段)

...的信息。解题思路:贪心策略:局部最优大区间划分,只不过这次是根据字母的最后一次出现的位置确定区间的最大值,因为字母是无规律分部,所 查看详情

[m贪心]lc763.划分字母区间(贪心+代码实现)(代码片段)

文章目录1.题目来源2.题目解析1.题目来源链接:763.划分字母区间2.题目解析lc讨论中看见的华为od面试编程题目,可以试试。贪心思路:本次分割字符串如果在后面都不出现,则单独成一段,作为有效答案。因... 查看详情

763.划分字母区间(代码片段)

字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例1:输入:S="ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为&qu... 查看详情

763.划分字母区间-贪心算法(代码片段)

...题目描述字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。示例1:输入:S="ababcbacadefegdehijhklij"输出:[... 查看详情

leetcode763.划分字母区间贪心策略:局部最优大区间划分(代码片段)

...的信息。解题思路:贪心策略:局部最优大区间划分,只不过这次是根据字母的最后一次出现的位置确定区间的最大值,因为字母是无规律分部,所以区间的最大值会跳跃性增加,不在是+1递增等规律递... 查看详情

力扣算法jslc[435.无重叠区间]lc[763.划分字母区间]

菜鸡刷算法的一天,每天分享两题算法,大家有这个想法的,可以给我个关注,然后一起坚持每天的算法之旅。希望我们共同进步,一起加油。菜鸡刷算法的一天,每天分享两题算法,大家有这个想法的,可以给我个关注,然后... 查看详情

2021-12-24:划分字母区间。字符串s由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。力扣763。某大厂面试(代码片

2021-12-24:划分字母区间。字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。力扣763。某大厂面试题。答案2021-12-24:... 查看详情

leetcode763.partitionlabels划分字母区间(中等)

一个字符串S,将其尽可能多的分割为子字符串,条件是每种字符最多只能出现在一个子串中。上面的示例中,字符串S中有多个a,这些a必须只能在第一个子串中,字母e出现在第二个子串中。这道题难点就是如何找到字符串的断... 查看详情

贪心热门问题8:划分字母区间(代码片段)

...LeetCode763.字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。输入:S="ababcbacadefegdehijhklij"输出:[9,7,8]解释&#x... 查看详情

java求解划分字母区间(代码片段)

...一、题目字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。二、题解在遍历的过程中相当于是要找每一个字母的边界,... 查看详情

leetcode刷题笔记-数据结构-day7(代码片段)

...-数据结构-day790.单词规律1.题目描述2.解题思路3.代码763.划分字母区间1.题目描述2.解题思路3.代码LeetCode刷题笔记-数据结构-day790.单词规律1.题目描述原题链接:90.单词规律2.解题思路算法:哈希表用两个哈希表:一个... 查看详情

时分时间划分到不同时间区间段,python(代码片段)

用Python实现一个功能,把一个时间划入到不同的时间范围内,比如23:05,把这个时间划入到(23,24)区间内。又比如0:56,划入(0,1)范围内。importdatetimeimportrandom#生成随机测试时间数量TIME_COUNT=20defmy_time():ti... 查看详情

将数据划分为训练集和测试集;缩放特征区间(代码片段)

导入葡萄酒数据:1importnumpyasnp2importpandasaspd34df_wine=pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data",header=None)5df_wine.columns=["classlabel","alcohol",6"malicac 查看详情

763.partitionlabels(代码片段)

题目描述:Astring S oflowercaselettersisgiven.Wewanttopartitionthisstringintoasmanypartsaspossiblesothateachletterappearsinatmostonepart,andreturnalistofintegersrepresentingthesizeoftheseparts.&n 查看详情

763.partitionlabels(贪心)(代码片段)

AstringSoflowercaselettersisgiven.Wewanttopartitionthisstringintoasmanypartsaspossiblesothateachletterappearsinatmostonepart,andreturnalistofintegersrepresentingthesizeoftheseparts.Example1:Input:S="a 查看详情

1.快速排序(代码片段)

...找到一个数作为分界点x。(q[l],q[(l+r)/2],q[r],随机值)2:划分区间。使得左区间里的数都小于等于x,右区间里的数都大于等于x。快速排序是选择一个数来划分区间。3:递归处理左右两区间。左区间排好序,右区间排好序后再拼... 查看详情

二维线段树(代码片段)

...lazytag标记就可以实现优化。对比一下一维和二维线段树划分区间的思路:一维线段树划分区间思路: 查看详情