高盛oa
一道题根本不会,抄答案过了。一道自己写,莫名其妙出现了不会的bug。最后交了暴力解,过了5/7。估计要跪。
总结:
缺点:做过的不熟练。没做过的题不会。一个陌生的小bug也de不出来。
措施:多总结还是有好处的。坚持刷tag题有必要,绝对能慢慢增强实力,很重要。
指定方向的dp: 改变i - 1 j - 1就行了 dp[j] = Math.min(dp[i+1][j-1], dp[i+1][j], dp[i+1][j+1]) + matrix[j];
加下一行不行,不能处理第一行的时候。该成每次加上一行,这样第一行就可以被初始化了。lc 64。
public class Solution {
/*
* @param grid: a list of lists of integers
* @return: An integer, minimizes the sum of all numbers along its path
*/
public int minPathSum(int[][] grid) {
//corner case
if (grid == null || grid.length == 0) {
return -1;
}
if (grid[0] == null || grid[0].length == 0) {
return -1;
}
//intialization
int m = grid.length;
int n = grid[0].length;
int[][] f = new int[m][n];
f[0][0] = grid[0][0];//
for (int i = 1; i < m; i++) {
f[i][0] = f[i - 1][0] + grid[i][0];
}
for (int j = 1; j < n; j++) {
f[0][j] = f[0][j - 1] + grid[0][j];
}
//top down
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
f[i][j] = grid[i][j] + Math.min(f[i - 1][j],f[i][j - 1]);
}
}
//result
return f[m - 1][n - 1];
}
}
[学生迟到问题]
Q2(MEDIUM): greatest lateness,不知道地里有没有这题的面经,给一个2d-vector的string,每一行格式是 [日期, 姓名, 开课时间, 到课时间],输出整个输入里累计“相对”迟到时间最长的同学的姓名, 如果学生早于开课时间absolute lateness算0,相对迟到时间是说同学当天绝对迟到时间和当天所有人绝对迟到时间的平均值的差,如果小于的话就算0,如果结果一样按姓名alphabetical输出
不知道存两个哈希表的好处
map.keySet().size()用于找size
每次i都要重新存声明为int
自己造轮子,写了半天,终于貌似好像过了:
// package whatever; // don't place package name! import java.io.*;
import java.util.*;
import java.lang.*; class Solution {
//method, need parameter, there is return
public String latestStudent(String[][] students) {
//initialization
HashMap<String, Integer> dayToTime = new HashMap<String, Integer>();
HashMap<String, Integer> nameToTime = new HashMap<String, Integer>();
HashMap<String, Integer> dayToAverageLateTime = new HashMap<String, Integer>();
int count = 0; //put time to map
for (int i = 1; i < students.length; i++) {
if (students[i][0] == students[i - 1][0]) {
count++;
}else {
int averageLateTime = dayToTime.get(students[i - 1][0]) / count;
count = 0;
dayToAverageLateTime.put(students[i - 1][0], averageLateTime);
break;
}
int time = Integer.valueOf(students[i][3]) - Integer.valueOf(students[i][2]);
if (time > 0) {
dayToTime.put(students[i][0], time);
}else
dayToTime.put(students[i][0], 0);
} int countOfAverage = dayToAverageLateTime.keySet().size();
int max = 0; //put student into the map, and find the max time
for (int i = 0; i < students.length; i++) {
int averageLateTime = dayToAverageLateTime.getOrDefault(students[i][0], 0);
int absoluteTime = Integer.valueOf(students[i][3]) - Integer.valueOf(students[i][2]);
if ((absoluteTime - averageLateTime)> 0) {
nameToTime.put(students[i][1], absoluteTime - averageLateTime);
max = Math.max(max, absoluteTime - averageLateTime);
}
} //find the max student
int countOfStudents = nameToTime.keySet().size();
for (String name : nameToTime.keySet()) {
if (nameToTime.get(name) == max)
System.out.println("max = " + max);
return name;
}
return null;
}
} class MyCode {
public static void main (String[] args) {
String[][] students = {{"1", "A", "540", "570"}, {"1", "B", "540", "543"}, {"1", "C", "540", "530"}, {"2", "A", "540", "580"}, {"2", "B", "540", "580"}, {"2", "C", "540", "595"}};
Solution answer = new Solution();
System.out.println("name = " + answer.latestStudent(students));
}
}
右端对齐:sb.append("\n");
// package whatever; // don't place package name! import java.io.*; class MyCode {
public static void main (String[] args) {
String str1 = "abc";
String str2 = "def";
String str3 = str1 + "\n" + str2;
System.out.println(str3);
}
}
\r是把前面的删掉
// package whatever; // don't place package name! import java.io.*; class MyCode {
public static void main (String[] args) {
String str1 = "abc";
String str2 = "def";
String str3 = "gji";
String str4 = "jkl";
String str = str1 + "\r" + str2 + "\r" + str3 + "\r" + str4;
System.out.println(str);
}
}
转大写要用.toUpperCase() 学生填志愿问题:可以用 comparable结构
class Student implements Comparable<Student>{
int score;
int index;
public Student(int score, int index) {
this.score = score;
this.index = index;
}
@Override
public int compareTo(Student o) {
if(this.score - o.score == 0) {
return this.index - o.index;
}
// TODO Auto-generated method stub
return this.score-o.score;
}
}
慈善数组每次分钱给最少的:
用pq,然后也可以用比较结构
class Orgnization implements Comparable<Orgnization>{
String name;
double amount; public Orgnization(String name) {
this.name = name;
this.amount = 0;
} @Override
public int compareTo(Orgnization o) {
if(this.amount - o.amount == 0) {
return this.name.compareTo(o.name);
}
return (int) (this.amount - o.amount);
}
有符号的算式版reverse words in a string:用一个变量isnumber来控制,true就append
public class ReverseAlgebraExpression { public static void main(String[] args) {
String test1 = "1*2.4+9.6-23.89";
String answer1 = "23.89-9.6+2.4*1";
String test2 = "1*2.4+-9.6-23.89";
String answer2 = "23.89--9.6+2.4*1";
String test3 = "-1*2.4+-9.6-23.89";
String answer3 = "23.89--9.6+2.4*-1";
test1(test1, answer1, 1);
test1(test2, answer2, 2);
test1(test3, answer3, 3); // String t1 = "My keyboard is broken!";
// String a1 = "My keyboRD IS BROKEN!";
// String t2 = "\"Baa, Baa!\" said the sheep";
// String a2 = "\"B, B!\" sID THE SHEEP";
// test2(t1, a1, 1);
// test2(t2, a2, 2); } public static void test1(String a, String b, int i) {
String output = null;
output = rae(a);
if(b.equals(output)) {
System.out.println("Passed case "+i);
} else {
System.out.println("Incorrect "+i+": " + output);
}
} public static void test2(String a, String b, int i) {
String output = null;
output = capLock(a);
if(b.equals(output)) {
System.out.println("Passed case "+i);
} else {
System.out.println("Incorrect "+i+": " + output);
}
} public static String rae(String expression) {
boolean isNumber = true;
StringBuilder output = new StringBuilder();
if(expression.length() == 0) return output.toString();
StringBuilder buffer = new StringBuilder();
buffer.append(expression.charAt(0));
for(int i = 1; i<expression.length(); i++) {
char cur = expression.charAt(i);
if(isNumber && (Character.isDigit(cur) || cur == '.')) {
buffer.append(cur);
continue;
}
if(isNumber && (cur=='+' || cur == '-' || cur == '*' || cur == '/')) {
output.insert(0, buffer);
buffer = new StringBuilder();
buffer.append(cur);
isNumber = false;
continue;
}
if(!isNumber && (cur=='+' || cur == '-' || cur == '*' || cur == '/')) {
output.insert(0, buffer);
buffer = new StringBuilder();
buffer.append(cur);
isNumber = true;
continue;
}
if(!isNumber && Character.isDigit(cur)) {
output.insert(0, buffer);
buffer = new StringBuilder();
buffer.append(cur);
isNumber = true;
}
}
output.insert(0, buffer);
return output.toString();
} public static String capLock(String input) {
boolean capLock = false;
StringBuilder output = new StringBuilder();
for(char c: input.toCharArray()) {
if(c == 'a' || c == 'A') {
capLock = !capLock;
continue;
}
if(capLock) {
output.append(Character.toUpperCase(c));
} else {
output.append(c);
}
}
return output.toString();
}
}
4 Whole Minute Dilemma有图
给一串歌曲的时间,求里面有多少 pair 可以相加变成整分钟
例如[40, 20, 60] 结果就是 1,必须是 pair,60 自己不能算一个. Waral 博客有更多文章,
我的理解是同一首歌不能重复组成 pair 的
思路是把 时间%60 和 出现的次数 作为键值对存进到一个 map 里面 然后遍历 map 找互补的:
就是twosum的hashmap的变形
世界杯概率: 保留两位小数
String a = String.format("%.2f", result) 一般只能长小数转为短小数
pq的写法:用comparator
PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue(
new Comparator<Map.Entry<Character, Integer>>() {
public int compare(Map.Entry<Character, Integer> a, Map.Entry<Character, Integer> b) {
return b.getValue() - a.getValue();
}
}
);
getOrDefault(Object,V)允许调用者在代码语句中规定获得在map中符合提供的键的值,否则在没有找到提供的键的匹配项的时候返回一个“默认值”。
高盛oa的更多相关文章
- 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司
一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...
- 港真,到底应该选择OA还是BPM?
越来越多企业意识到流程管理的重要性,但是,选择OA还是BPM,却让他们产生了选择困难症. 一方面,企业皆注重流程的高效运转,最好内外部的业务都能用一个系统来解决.所有流程一天就能上线什么的,那就更好啦 ...
- 从零到有——我的OA如何成长
早前发文说要分享,马上进入了财务系统的开发,拖到现在,见笑了. 我在月初离职了,所以到处跑,找工作,想想南京.苏州.无锡(去玩的).杭州(路过).上海.珠海.深圳.广州.觉得找工作也差不多尾声了,就留 ...
- OA办公自动化系统源码
最新extjs6富客户端,.net平台开发,sql server数据库,基础权限人员基础平台,可方便二次开发,使用EF为orm,autofac为ioc,Castle为基础的aop,实现常用OA系统功能 ...
- 【Java EE 学习 67 上】【OA项目练习】【JBPM工作流的使用】
OA项目中有极大可能性使用到JBPM框架解决流程控制问题,比如请假流程.报销流程等等. JBPM:JBoss Business Process Management,翻译过来就是业务流程管理.实际上就 ...
- 去年做了什么?OA。
假前一天下午被经理和PM叫上楼,首要一个问题是我去年干了啥,我大致支吾了几句描述了下,一时也说不出个大概.后面就是一片悠长的面谈,什么没达到期望,公司状况不好.......哦,这是KPI评价啊,剩下的 ...
- OA工作流规格--转
工作流是整个OA系统的核心,也是BPM的核心,工作流到 底需要实现哪些功能,本文就此以用户的需求为蓝本进行阐述.工作流表面看起来是很简单的,无非是一个表单模板,一个流程定义,然后起草后根据设定的流程一 ...
- 专家解读:BPM与OA的区别
演进历程 传统OA 模块化架构,仅能满足管理执行的刚性效率,系统的专业化程度有限. BPM 平台化架构,管理要求精细化程度高,系统更专业化,更注重整合. BPM SAAS 基于云架构,跨组织社交化,系 ...
- 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观
整合了一个功能强大完善的OA系统源码,php全开源界面漂亮美观.需要的同学联系Q:930948049
随机推荐
- TRANSFORM YOUR HABITS
TRANSFORM YOUR HABITS3rd EditionNote from James Clear:I wrote Transform Your Habits to create a free ...
- 半精度浮点数取5bit指数位
半精度浮点是指用16bit表示一个浮点数,最高1bit为符号位,中间5bit为指数a,低10bit为尾数b Value = (符号位)(1+b/1024)*(2^(a-16)) 程序很简单,用pyin ...
- Delphi实现悬浮的卡拉OK字幕
千千静音的悬浮式卡拉OK字幕,大家一定觉得不错吧,其实用Delphi,你也可以很容易的做得到.首先我们在Delphi中新建一个700*130左右的窗体,上面放置两个Image控件,Image控件的Al ...
- platform 系统是windows还是liunx
import platform # 判断当前代码运行的系统是windows还是liunx print(platform.architecture()) print(platform.platform( ...
- InfluxDB时序数据库应用场景
目前了解到的InfluxDB时序数据库应用场景:如在数据库中有很多条记录,有的记录包含了时间字段time和数值字段water_level,有的只有时间字段time SELECT MAX("w ...
- spring .cloud ------------java.lang.RuntimeException: com.netflix.client.ClientException,Caused by: java.lang.IllegalArgumentException: MIME type may not contain reserved characters
1.问题的发生 Feign在默认情况下使用的是JDK原生的URLConnection发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用HTTP的persistence connect ...
- 1.3.3、CDH 搭建Hadoop在安装之前(端口---CDH组件使用的端口)
列出的所有端口都是TCP. 在下表中,每个端口的“ 访问要求”列通常是“内部”或“外部”.在此上下文中,“内部”表示端口仅用于组件之间的通信; “外部”表示该端口可用于内部或外部通信. Compone ...
- @JsonInclude(JsonInclude.Include.NON_NULL) 加在对象上
@JsonInclude(JsonInclude.Include.NON_NULL) public class ViewWorkermessage implements Serializable { ...
- 大数据入门到精通1--大数据环境下的基础文件HDFS 操作
1.使用hdfs用户或者hadoop用户登录 2.在linux shell下执行命令 hadoop fs -put '本地文件名' hadoop fs - put '/home/hdfs/sample ...
- 解决不联网无法启动struts2问题
Unable to load configuration. - Class: java.net.PlainSocketImplFile: PlainSocketImpl.javaMethod: con ...