将数组分成和相等的三个部分,以及maven报错“找不到或无法加载主类”

这两个确实是风马牛不相及的东西,但是在等待SQL脚本运行的时候做一道算法题,似乎也没什么问题(笑)。

先说maven的事情。因为是前端,平时不写Java,遇到这个熟悉的报错居然有点不知所措……用的是IDEA,检查project structure之后发现没有问题,然后看看target里生成的class,发现没有对应的class文件,也就是说没build成功,也不知道为啥。maven clean之后重新再来,就恢复正常了。


然后说这个题。将数组分成和相等的三个部分,本来是一道很简单的题,思路也很清晰,就是找两个下标,然后每个部分都是n / 3,但我想说的是两个事情:

第一个是尽量不要循环嵌套。想想也知道,嵌套的复杂度是O(nk),并列是O(kn)。这次我就是傻了吧唧的嵌套循环,然后超时了……我觉得可能是受两数之和那道题的影响,觉得通过第一层循环就可以把题目转化成两数之和那个题,但是并没有这么复杂。

第二个是之前在网上看到一个处理cin的函数,据说能大幅提高I/O效率,从而加快LeetCode的运行速度:

static const auto _ = []() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return nullptr;
}();

说实话此前我一直嗤之以鼻,觉得这种东西怎么可能有用,然后今天试了一下,发现好像真的有用……当场打脸。加这个之前,运行时间是64ms,加了之后变成了32ms,我都惊了,这也太明显了吧。感觉对那种大量I/O的题目效果比较明显,比如这个题就有一个长达几屏幕的数组。

具体解释就不放了,网上有很多,主要是使用方法,加在class前面就行:

static const auto _ = []() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return nullptr;
}();

class solution {
    // 题目内容
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值