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

1413. 逐步求和得到正数的最小值 / 1417. 重新格式化字符串

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1413. 逐步求和得到正数的最小值 / 1417. 重新格式化字符串

1413. 逐步求和得到正数的最小值【简单题】

思路:【模拟】

    定义初始值n,当nums中第一个数nums[0]大于等于1时,初值为1,否则初值置为1-nums[0]。进入一个死循环while-true,定义累加和sum=n,标志位flag=true,从左到右遍历nums,遍历到的nums元素为v,sum累加v,如果sum<1则flag置为false并退出for循环。在for循环之外,判断标志位flag,如果flag为true,说明当前这个n满足题意要求,返回这个n即可,否则,n++继续上述判断。

代码:

class Solution {
    public int minStartValue(int[] nums) {
        int n = nums[0] >= 1 ? 1 : 1-nums[0];
        while (true){
            int sum = n;
            boolean flag = true;
            for (int v : nums){
                sum += v;
                if (sum<1){
                    flag = false;
                    break;
                }
            }
            if (flag){
                return n;
            }else {
                n++;
            }
        }
    }
}

这题也没官方题解,我看评论区大佬也挺能搞,java用时百分百都有,我这用时1ms就只击败9%了,这也太卷了。


1417. 重新格式化字符串【简单题】

思路:

    先遍历一遍字符串,分别将数字和字母统计在nums和chars两个列表中。如果两个列表的长度差大于1,则必不可能重新格式化字符串,直接返回空字符串。如果两个列表的长度差小于等于1,则定义可变字符串sb来表示格式化后的字符串,定义int类型i,j分别用来表示nums和chars的指针,定义布尔类型flag表示是否先添加数字,如果chars的长度小于nums的长度,则先添加数字(哪个长先添加哪个)。遍历nums和chars,如果flag为true,则添加数字,并i++,如果flag为false,则添加字母,并j++。添加完flag取反。最后返回sb.toString()。

代码:

class Solution {
    public String reformat(String s) {
        List chars = new ArrayList<>();
        List nums = new ArrayList<>();
        for (char ch : s.toCharArray()){
            if (ch >= '0' && ch <= '9'){
                nums.add(ch);
            }else {
                chars.add(ch);
            }
        }
        if (Math.abs(nums.size()-chars.size())>1){
            return "";
        }
        StringBuilder sb = new StringBuilder();
        int i = 0,j = 0;
        boolean flag = chars.size() < nums.size();
        while (i < nums.size() || j < chars.size()){
            if (flag){
                if (i < nums.size()){
                    sb.append(nums.get(i++));
                }
            }else {
                if (j < chars.size()){
                    sb.append(chars.get(j++));
                }
            }
            flag = !flag;
        }
        return sb.toString();
    }
}

用时:
目前还没官方题解,但是已经看到有大佬卷到百分百了。


今天每日一题是困难题,我直接开溜。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732933.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号