栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Leetcode Weekly Contest 261(数学推理、贪心)

Java 更新时间:发布时间: 百科书网 趣学号
题目链接: Leetcode Weekly Contest 261 1、2027. Minimum Moves to Convert String 难度:Easy 代码:
class Solution {
    public int minimumMoves(String s) {
        char[] a=s.toCharArray();
        int res=0;
        for(int i=0;i 
2、2028. Find Missing Observations 
难度:Medium 
代码: 
class Solution {
    public int[] missingRolls(int[] rolls, int mean, int n) {
        int m=rolls.length;
        int sum=mean*(m+n);
        for(int r:rolls){
            sum-=r;
        }
        if(sum6*n){
            int[] res=new int[0];
            return res;
        }
        int b=sum%n;
        int a=sum/n;
        int[] res=new int[n];
        Arrays.fill(res,a);//先平均分配
        for(int i=0;i 
3、2029. Stone Game IX 
难度:Medium 
思路: 

参考高赞回答,数学推理题,比较难。

代码
class Solution {
    public boolean stoneGameIX(int[] stones) {
        int[] cnt=new int[3];
        //cnt[i]表示stones[]%3=i的个数
        for(int a:stones){
            cnt[a%3]++;
        }
        if( (cnt[0]%2==0&&cnt[1]>0&&cnt[2]>=cnt[1])||(cnt[0]%2==0&&cnt[2]>0&&cnt[1]>=cnt[2])){
            //1,[1,2,1,2,...],2(还能剩下很多2)
            //2,[2,1,2,1,...],1//第一种情况的对偶
            return true;
        }
        if( (cnt[0]%2==1&&(cnt[1]-cnt[2]>=3))||(cnt[0]%2==1&&(cnt[2]-cnt[1]>=3)) ){
            //1,[1,2,1,2,...],0,1(还能剩下很多1)
            //2,[2,1,2,1,...],0,2//第一种情况的对偶
            return true;
        }
        return false;
    }
}
4、2030. Smallest K-Length Subsequence With Occurrences of a Letter 难度:Hard 思路

贪心,参考高赞回答。

代码
class Solution {
    public String smallestSubsequence(String s, int k, char letter, int repeat) {
        char[] str=s.toCharArray();
        int n=str.length;
        int count=0;
        for(char c:str){
            if(c==letter){
                count++;
            }
        }
        Stack stack=new Stack<>();
        for(int i=0;ic&&n-i+stack.size()-1>=k&&(stack.peek()!=letter||count>repeat)){
                //n-i+stack.size()-1>=k保证弹出栈顶元素后还能凑够k个字符
                //stack.peek()!=letter||count>repeat保证能凑够repeat个letter
                if(stack.peek()==letter){
                    repeat++;//还需要多少个letter字符
                }
                stack.pop();
            }
            if(stack.size()0){//还需要多少个不是letter的字符
                    stack.push(c);
                }
            }
            if(c==letter){
                count--;//剩余的字符中还有多少个为letter的字符
            }
        }
        StringBuilder sb=new StringBuilder();
        while(!stack.isEmpty()){
            sb.append(stack.pop());
        }
        return sb.reverse().toString();
    }
}
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/295628.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号