博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
largest-divisible-subset
阅读量:7072 次
发布时间:2019-06-28

本文共 2155 字,大约阅读时间需要 7 分钟。

用了两种方法:

class Solution {    // size of vector -> set of last item of vector    map
> size_mp; // last item of vector -> whole vector map
> result_mp; public: // if new item can divide last item, it can divide all items in vector, // so that no need to check previous item vector
largestDivisibleSubset(vector
& nums) { if (nums.size() < 1) { return nums; } sort(nums.begin(), nums.end()); for (vector
::iterator itr = nums.begin(); itr != nums.end(); ++itr) { // only need prev item to get whole items from result_mp int prev = -1; // iterator from longer vector to shorter for (map
>::reverse_iterator ritr = size_mp.rbegin(); ritr != size_mp.rend(); ++ritr) { for (set
::iterator sitr = ritr->second.begin(); sitr != ritr->second.end(); ++sitr) { // if last item of long vector can divide new number, // no need to check other vector or previous item if (*itr % *sitr == 0) { prev = *sitr; break; } } if (prev != -1) { break; } } vector
tmp_vec; if (prev != -1) { tmp_vec = result_mp[prev]; } tmp_vec.push_back(*itr); result_mp[*itr] = tmp_vec; int newsize = tmp_vec.size(); if (size_mp.find(newsize) == size_mp.end()) { set
tmp_set; tmp_set.insert(*itr); size_mp[newsize] = tmp_set; } else { size_mp[newsize].insert(*itr); } } set
::iterator sitr_new = size_mp.rbegin()->second.begin(); return result_mp[*sitr_new]; } };
31 / 31 test cases passed.
Status: 

Accepted

Runtime: 261 ms

 

开始用的下面这种方法,超时了:

class Solution {    vector
nums; int nlen; vector
result; void func(vector
& iv, int index) { int vlen = iv.size(); int divisor = 1; if (vlen > 0) { divisor = iv[vlen-1]; } for (int k=index; k
result.size()) { result = iv; } } public: vector
largestDivisibleSubset(vector
& arg) { nums = arg; sort(nums.begin(), nums.end()); nlen = nums.size(); if (nlen <= 1) { return nums; } vector
tmp; func(tmp, 0); return result; } };

 

转载于:https://www.cnblogs.com/charlesblc/p/5623319.html

你可能感兴趣的文章
DW快速去除tppabs冗余代码
查看>>
Java8新特性之:新的日期和时间API
查看>>
如何才能从程序员成长为实战型架构师?必掌握这7大实战技能经验
查看>>
rabbitMQ集群的搭建和维护第二篇---利用python程序完成mq的消息收发和实时监控
查看>>
网众设置开机重启服务的命令,才可连接BOOT服务器
查看>>
数字签名基本原理
查看>>
RHEL6.3 DNS配置详解一 DNS相关概念理解及配置基础
查看>>
Windows环境 和 Linux环境下搭建Qt开发环境
查看>>
简述synchronized和java.util.concurrent.locks.Lock的异同
查看>>
辅DNS服务器部署文档(for linux平台)
查看>>
weblogic安装问题
查看>>
在win2008r2下开启ntp服务
查看>>
我的友情链接
查看>>
SpringMVC源码解析(三)——HandlerAdapter
查看>>
Python执行系统命令的方法
查看>>
动态加载远程Jar的实现方式
查看>>
无线***笔记(一)-《***WPA-PSK加密无线网络》
查看>>
MyEclipse10.1集成SVN
查看>>
Sitemesh和Struts2结合时Filter的配制顺序
查看>>
【python】编程语言入门经典100例--19
查看>>