我有整数列表,我想创建一个从序列1到n的for循环,跳过List中已经存在的元素,那么这是最好的方法还是有效的方法呢?
答案 0 :(得分:1)
大多数高效方式,即 O(m + n),是将version: '2'
services:
db:
image: mysql:5.7
ports:
- "9013:3306"
volumes:
- ./database:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- ./wordpress:/var/www/html
ports:
- "8013:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_TABLE_PREFIX: wpd1_
转换为HashSet
,然后使用{检查{3}}:
List
如果您未转换为Set<Integer> set = new HashSet<>(list);
for (int i = 1; i <= n; i++) {
if (! set.contains(i)) {
// your code here
}
}
,并直接使用Set
contains()
方法,则效果将为 O(mn),其中 m 是列表中元素的数量。
答案 1 :(得分:-1)
您可以使用hashset来自动删除重复的元素。因此,对于您的输入数组,将每个元素逐个放入hashset中,最后您的hashset将包含非重复元素。
关于hashshet的疑问请参考:https://www.tutorialspoint.com/java/java_hashset_class.htm