幅度极点:数组中的元素,其左侧元素小于或等于它,右侧元素大于或等于它.
示例输入
3,1,4,5,9,7,6,11
Run Code Online (Sandbox Code Playgroud)
期望的输出
4,5,11
Run Code Online (Sandbox Code Playgroud)
我在面试中被问到这个问题,我必须返回元素的索引,并且只返回满足条件的第一个元素.
我的逻辑
- 取两个MultiSet(这样我们也可以考虑复制),一个用于元素的右侧,一个用于元素的左侧(极点).
- 从第0个元素开始,将所有元素放在"右边的集合"中.
- 如果第0个元素小于或等于"right set"上的所有元素,则返回其索引.
- 否则将其放入"左集"并从索引1处的元素开始.
- 遍历数组,每次从"左设置"中选择最大值,从"右设置"中选择最小值并进行比较.
- 在任何元素的任何时刻,其左边的所有值都在"左集"中,右边的值在"右集"中
码
int magnitudePole (const vector<int> &A) {
multiset<int> left, right;
int left_max, right_min;
int size = A.size();
for (int i = 1; i < size; ++i)
right.insert(A[i]);
right_min = *(right.begin());
if(A[0] <= right_min)
return 0;
left.insert(A[0]);
for (int i = 1; i < size; ++i) {
right.erase(right.find(A[i]));
left_max = *(--left.end());
if (right.size() > 0)
right_min = *(right.begin());
if (A[i] > left_max && A[i] <= right_min)
return …Run Code Online (Sandbox Code Playgroud) 有人和maven一起使用ExtJs 4吗?至于现在,Sencha SDK工具只能用于已部署和启动的webapp(它是一个java webapp),即使在这种情况下,生成的app-all.js也不包含所有依赖项,Ext下载了很多dep.在运行时.我需要的是以某种方式在生成过程中集成生产文件生成.
我有一些将数据从一个数据库迁移到另一个数据库的示例作业,我希望获得有关当前进度的一些信息,例如从应用程序本身交互运行作业时的那些(我从命令行导出并运行它) ).我使用flowMeter和statsCatcher,但我得到的是整个时间和传递的记录总数(例如4657秒,50.000.000行).有没有解决方案来获得一个像样的日志?
隐藏静态字段时,字段对子类的访问级别没有限制,它甚至可以是非静态的,也可以是其他数据类型.
另一方面,当隐藏静态方法时,从超类隐藏静态方法的子类中的静态方法可以允许比隐藏方法更多但不能更少的访问.
AFAIK,静态方法链接无论如何都是在编译时完成的,那么为什么会有这样的限制呢?
PS问题只是出于好奇.
使用java.util.Optional作为spring控制器请求参数。
List<String>对于简单值(int、String 等),它按预期工作,但对于类型为or的参数,String[]我为其传递多个值:
mockMvc.perform(get("/get").param("param", "value1", "value2"))
Run Code Online (Sandbox Code Playgroud)
它总是只选择传递的值中的一个值。
@RequestMapping(value = "/get", method = RequestMethod.GET)
public Object get(@RequestParam(name = "param") Optional<String[]> array) {
// the array will have just 1 element : 'value1'
}
Run Code Online (Sandbox Code Playgroud) 控制器
@RestController
@Validated
class MyController {
@GetMapping("/foo")
public String unwrapped(@Min(1) @RequestParam("param") int param) {
return Integer.toString(param);
}
@GetMapping("/bar")
public String wrapped(@ModelAttribute @Valid Wrapper bean) {
return Integer.toString(bean.param);
}
static class Wrapper {
@Min(1)
int param;
public void setParam(final int param) {
this.param = param;
}
}
}
Run Code Online (Sandbox Code Playgroud)
测试
public class MyControllerTest {
MyController controller = new MyController();
MockMvc mockMvc = MockMvcBuilders
.standaloneSetup(this.controller)
.build();
@Test // fails
public void unwrapped() throws Exception {
this.mockMvc.perform(get("/foo")
.param("param", "0"))
.andExpect(status().isBadRequest());
}
@Test // passes …Run Code Online (Sandbox Code Playgroud) 我有一个看起来很奇怪的例子.
public class Join {
public static void main(String[] args) {
Thread t1 = new Thread(
new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
);
Thread t2 = new Thread(t1);
t1.setName("t1");
t2.setName("t2");
t1.start();
try {t1.join();} catch (InterruptedException ie) {}
t2.start();
}
}
Run Code Online (Sandbox Code Playgroud)
我们只看到打印t1.如果我们将评论"t1.join",我们将得到预期的输出(t1 t2).为什么?
有一个 shell 脚本,它反过来运行一个 java 程序。脚本调用如下:
./script.sh 1 2 3 4 "ab cd"
Run Code Online (Sandbox Code Playgroud)
第 5 个 shell 参数(ab cd)必须作为 java 系统属性传递,我正在做的是:
JAVA_OPTS="-Xmx512M -Dlog4j.defaultInitOverride=true"
if [ "$5" ] ; then
JAVA_OPTS="$JAVA_OPTS -Dconfig.path=$5"
fi
Run Code Online (Sandbox Code Playgroud)
然后,运行 java(JAVA_EXE 和 CP 有正确的值):
$JAVA_EXE $JAVA_OPTS -classpath $CP com.foo.Main
Run Code Online (Sandbox Code Playgroud)
收到此错误:
Error: Could not find or load main class cd
Run Code Online (Sandbox Code Playgroud)
如果传递“abcd”而不是“ab cd”,则一切正常。
如果传递内联,只需用引号将值括起来:
java -Xmx512M -Dconfig.path="ab cd" com.foo.Main
Run Code Online (Sandbox Code Playgroud)
当必须使用变量时会出现问题。
我应该如何正确传递包含空格的参数?
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss z");
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());
// 2016-10-10 09:28:45 PDT
String s = zonedDateTime.format(formatter);
// this call fails
ZonedDateTime.parse(s, formatter);
Run Code Online (Sandbox Code Playgroud)
给定片段有什么问题,不应该formatter.parse(date.format(formatter))评估相同date?
例外:
java.time.DateTimeException:无法从TemporalAccessor获取LocalTime:{MilliOfSecond = 0,MicroOfSecond = 0,HourOfAmPm = 9,MinuteOfHour = 28,NanoOfSecond = 0,SecondOfMinute = 45},ISO,America/Los_Angeles解析为2016-10- 10的java.time.format.Parsed类型
我在许多库中看到,当返回一些结果时,使用return a = new A()(例如return entrySet = new EntrySet())而不是仅返回new EntrySet(),有什么区别?
我们的项目使用google guava,apache commons以及其他具有常见任务的库,我想知道这些库是否包含进行空安全转换的方法(对象编号,对象到字符串).至于现在我给自己写了一些辅助方法,例如:
int parseInteger(Object obj) {
if (obj!= null) {
if (obj instanceof Integer) return (Integer) obj;
if (obj instanceof Long) return ((Long) obj).intValue();
return Integer.parseInt(obj.toString());
} else {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud) JBoss(或任何其他实体)是否为Eclipse发布了Drools插件?