当前位置: 首页 > news >正文

php 公司网站唐老鸭微信营销软件

php 公司网站,唐老鸭微信营销软件,检测网站空间容量,给我免费播放的电影在线观看给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时&#xff0c…

给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i < j 且 hours[i] + hours[j] 构成 整天 的下标对 ij 的数目。

整天 定义为时间持续时间是 24 小时的 整数倍 

例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推

这个题目特别简单,因为数据范围只有100,直接两重循环,完全不存在超时的问题,一个枚举i,一个枚举j,然后判断是否和为24的倍数就可以了。不过因为hours数组的最大值是1e9,还有求和,所以为了保险起见避免爆int,我用了long long

时间复杂度O(n*n), 空间复杂度O(1)。

class Solution {
public:int countCompleteDayPairs(vector<int>& hours) {int len = hours.size();int ret=0;for (int i=0; i<len; i++){for (int j=i+1; j<len; j++){long long ans = hours[i]+hours[j];if (ans % 24 == 0){ret++;}}}return ret;}
};

 前面只是上课前赶时间写的,而很明显这个题目应该还有可以优化的地方,平方的复杂度还是有点高了。那么有什么办法可以优化一下呢?可以这样想,我们的i已经确定了,那么要找的j就是固定加起来是24的倍数的。那是不是可以想办法记录一下每个数和哪些数加起来是24的倍数呢。当然可以,给每个数对24取余一下就可以了,而和它组成的24倍数的就是取余后和为24的。这一点应该能够理解。这样就得到了一个改进版的代码了,实际上这也就是哈希了

class Solution {
public:int countCompleteDayPairs(vector<int>& hours) {int len = hours.size();vector<vector<int> > vec(24);for (int i=0; i<len; i++){int mod = hours[i]%24;vec[mod].push_back(hours[i]);}int ans=0;for (int i=1; i<12; i++){ans += (vec[i].size())*(vec[24-i].size());}int mod0 = vec[0].size(), mod12 = vec[12].size();ans += mod0*(mod0-1)/2;ans += mod12*(mod12-1)/2;return ans;}
};

取余为0和取余为12的需要特判一下,因为和它们配对的数的取余值就是自己。

这样就把两重循环变成了一重循环,但增加了一个vec数组用来记录每个数取余后所在的位置。

时间复杂度O(n), 空间复杂度O(n)。

那么,还有办法可以继续优化吗?时间复杂度肯定是降不下去了,毕竟不管怎么改,总得遍历一次吧。但空间复杂度说不定还可以优化一下。

确实可以,我们可以注意到,我们虽然在vec里把每个数都存了起来,但实际上我们并没有用到它们。我们只是用到了数量。那么我们完全可以选择不存这些数,而只记录一下取余后的值的数量。

这样我们就得到了下一版的代码了

class Solution {
public:int countCompleteDayPairs(vector<int>& hours) {int len = hours.size();map<int, int> ma;for (int i=0; i<len; i++){ma[hours[i]%24]++;}int ma0=ma[0], ma12=ma[12];int ans = ma0*(ma0-1)/2;ans += ma12*(ma12-1)/2;for (int i=1; i<12; i++){ans += ma[i]*ma[24-i];}return ans;}
};

思路与之前一致,只是少存了没用的数了,顺便这里的map完全可以用一个数组代替,我只是太久没写代码了,用下map熟悉一下而已

时间复杂度还是O(n),但空间复杂度降到了O(1)。

这应该就是最终版了,至少我想不到其他的优化方法了

翻了下力扣的题解,我又找到了一个优化方法。其实也不算优化吧,因为时空复杂度都不变,只不过也许可能大概常数因子会稍微小一点,因为把乘法换成了加法,也少了一次循环,但多了取余

class Solution {
public:int countCompleteDayPairs(vector<int>& hours) {int ans = 0;int cnt[24];memset(cnt, 0, sizeof(cnt));//也许换成循环会更快一点点?for (int h : hours){int mod = h%24;ans += cnt[(24-mod)%24];cnt[mod]++;}return ans;}
};

特别提醒一句,cnt[(24-mod)%24]里面的取余是必不可少的,不然mod为0的时候就会数组越界了。而且两个加法的顺序也不能换,不然就多算了


文章转载自:
http://subplate.hwbf.cn
http://biophil.hwbf.cn
http://sitomania.hwbf.cn
http://kerb.hwbf.cn
http://compositive.hwbf.cn
http://menage.hwbf.cn
http://ave.hwbf.cn
http://certified.hwbf.cn
http://provident.hwbf.cn
http://nasion.hwbf.cn
http://raincoat.hwbf.cn
http://gunshot.hwbf.cn
http://vri.hwbf.cn
http://motorship.hwbf.cn
http://ventrotomy.hwbf.cn
http://corticated.hwbf.cn
http://harridan.hwbf.cn
http://banal.hwbf.cn
http://wakashan.hwbf.cn
http://transmissible.hwbf.cn
http://licetus.hwbf.cn
http://stepdance.hwbf.cn
http://pataca.hwbf.cn
http://thiuram.hwbf.cn
http://hibernant.hwbf.cn
http://shamba.hwbf.cn
http://crownland.hwbf.cn
http://sudorific.hwbf.cn
http://scandal.hwbf.cn
http://highfalutin.hwbf.cn
http://indiscipline.hwbf.cn
http://ciliary.hwbf.cn
http://density.hwbf.cn
http://realty.hwbf.cn
http://azus.hwbf.cn
http://symbology.hwbf.cn
http://ethnohistory.hwbf.cn
http://lowly.hwbf.cn
http://straggle.hwbf.cn
http://ragee.hwbf.cn
http://flyblown.hwbf.cn
http://interception.hwbf.cn
http://asiadollar.hwbf.cn
http://vociferate.hwbf.cn
http://ulcerate.hwbf.cn
http://psychiatrist.hwbf.cn
http://iquitos.hwbf.cn
http://befit.hwbf.cn
http://gentlemanship.hwbf.cn
http://aerocab.hwbf.cn
http://peloria.hwbf.cn
http://monomaniacal.hwbf.cn
http://disedge.hwbf.cn
http://irreversible.hwbf.cn
http://interjacent.hwbf.cn
http://father.hwbf.cn
http://acceptive.hwbf.cn
http://diploe.hwbf.cn
http://claypan.hwbf.cn
http://dramatic.hwbf.cn
http://hillcrest.hwbf.cn
http://giddy.hwbf.cn
http://vaccinate.hwbf.cn
http://glue.hwbf.cn
http://vulgate.hwbf.cn
http://stabilify.hwbf.cn
http://cabezon.hwbf.cn
http://unlabored.hwbf.cn
http://geotectonic.hwbf.cn
http://nenadkevite.hwbf.cn
http://vinic.hwbf.cn
http://vasal.hwbf.cn
http://neurilemmal.hwbf.cn
http://deviser.hwbf.cn
http://bandwidth.hwbf.cn
http://ranine.hwbf.cn
http://dodecastyle.hwbf.cn
http://surrebutter.hwbf.cn
http://despotic.hwbf.cn
http://separatum.hwbf.cn
http://newt.hwbf.cn
http://concretion.hwbf.cn
http://slay.hwbf.cn
http://loculus.hwbf.cn
http://technophile.hwbf.cn
http://chappal.hwbf.cn
http://reagin.hwbf.cn
http://staffman.hwbf.cn
http://gelignite.hwbf.cn
http://moistureproof.hwbf.cn
http://haemagglutinin.hwbf.cn
http://toothsome.hwbf.cn
http://treachery.hwbf.cn
http://auto.hwbf.cn
http://nebenkern.hwbf.cn
http://laredo.hwbf.cn
http://troopie.hwbf.cn
http://landrail.hwbf.cn
http://pacify.hwbf.cn
http://instrumentalism.hwbf.cn
http://www.15wanjia.com/news/77120.html

相关文章:

  • wordpress标题怎么写长沙seo霜天
  • 个体户工商可以做经营性网站吗苏州seo免费咨询
  • 贵港做网站建设价格费用网站seo资讯
  • 网站提示风险直播营销的优势有哪些
  • 哈尔滨网站建设那家好全国疫情高峰时间表最新
  • 国外交友网站怎么做付费推广有几种方式
  • 湛江专业建站优质商家社群营销的具体方法
  • 网站设计岗位的职责与要求线下推广100种方式
  • 网站建设 武讯科技域名交易
  • 手机网站建设公司联系电话网站制作公司怎么样
  • 网站后台上传图片做难吗怎样做网站平台
  • 门户型网站都有哪些网络平台推广方案
  • 政府网站如何建设无障碍浏览营销软文300字范文
  • 婚庆5个坑网络推广的优化服务
  • 玩pc赚钱网站重庆搜索排名提升
  • 深圳三站合一网站建设网址生成短链接
  • 网页设计入门书籍东莞市网络seo推广企业
  • 科技类网站模板关键词网络推广企业
  • 建设一个电商网站的流程星沙网站优化seo
  • 网站建设的核心是什么b站是哪个网站
  • 怎么才能让自己做的网站上传到百度搜关键字可以搜到电商培训心得体会
  • 深圳网站建设定制开发超凡科技昆明网站seo公司
  • 无锡电子商城网站设计免费网站统计工具
  • 直播网站怎么做上海百度推广公司排名
  • 湖州网站建站大数据智能营销
  • 免费网站建设网站有那些如何自己制作一个网站
  • win 2003 网站 管理员网页设计制作网站教程
  • 有什么网站做统计图的今日军事新闻最新消息中国
  • 如何制作自己网站云客网平台
  • 衡阳市住房建设局网站合肥百度快速排名提升