一道题根本不会,抄答案过了。一道自己写,莫名其妙出现了不会的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的更多相关文章

  1. 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司

    一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...

  2. 港真,到底应该选择OA还是BPM?

    越来越多企业意识到流程管理的重要性,但是,选择OA还是BPM,却让他们产生了选择困难症. 一方面,企业皆注重流程的高效运转,最好内外部的业务都能用一个系统来解决.所有流程一天就能上线什么的,那就更好啦 ...

  3. 从零到有——我的OA如何成长

    早前发文说要分享,马上进入了财务系统的开发,拖到现在,见笑了. 我在月初离职了,所以到处跑,找工作,想想南京.苏州.无锡(去玩的).杭州(路过).上海.珠海.深圳.广州.觉得找工作也差不多尾声了,就留 ...

  4. OA办公自动化系统源码

    最新extjs6富客户端,.net平台开发,sql server数据库,基础权限人员基础平台,可方便二次开发,使用EF为orm,autofac为ioc,Castle为基础的aop,实现常用OA系统功能 ...

  5. 【Java EE 学习 67 上】【OA项目练习】【JBPM工作流的使用】

    OA项目中有极大可能性使用到JBPM框架解决流程控制问题,比如请假流程.报销流程等等. JBPM:JBoss Business Process Management,翻译过来就是业务流程管理.实际上就 ...

  6. 去年做了什么?OA。

    假前一天下午被经理和PM叫上楼,首要一个问题是我去年干了啥,我大致支吾了几句描述了下,一时也说不出个大概.后面就是一片悠长的面谈,什么没达到期望,公司状况不好.......哦,这是KPI评价啊,剩下的 ...

  7. OA工作流规格--转

    工作流是整个OA系统的核心,也是BPM的核心,工作流到 底需要实现哪些功能,本文就此以用户的需求为蓝本进行阐述.工作流表面看起来是很简单的,无非是一个表单模板,一个流程定义,然后起草后根据设定的流程一 ...

  8. 专家解读:BPM与OA的区别

    演进历程 传统OA 模块化架构,仅能满足管理执行的刚性效率,系统的专业化程度有限. BPM 平台化架构,管理要求精细化程度高,系统更专业化,更注重整合. BPM SAAS 基于云架构,跨组织社交化,系 ...

  9. 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观

    整合了一个功能强大完善的OA系统源码,php全开源界面漂亮美观.需要的同学联系Q:930948049

随机推荐

  1. LeetCode题解:Flatten Binary Tree to Linked List:别人的递归!

    总是在看完别人的代码之后,才发现自己的差距! 我的递归: 先把左侧扁平化,再把右侧扁平化. 然后找到左侧最后一个节点,把右侧移动过去. 然后把左侧整体移到右侧,左侧置为空. 很复杂吧! 如果节点很长的 ...

  2. jquery左侧菜单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. sourcetree 跳过注册

    https://www.cnblogs.com/lucio110/p/8192792.html

  4. 虚拟机centos NAT模式 配置静态ip

    主要的设置有1.配置ip地址段,2.配置NAT(网关.ip地址端.子网掩码),3.修改网卡配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0 ),4.重启网卡 ...

  5. 深入jUI(DWZ)

    -----------------------------------------------------------------------------主页面index.html <html& ...

  6. Celery + RabbitMq 示意图

    一直搞不清楚消息队列和任务队列是如何结合的,直到碰到了 :http://www.cnblogs.com/jijizhazha/p/8086119.html 中的图,恍然大悟,凭借自己的理解,画了这幅组 ...

  7. ArcGIS案例学习笔记-聚类点的空间统计特征

    ArcGIS案例学习笔记-聚类点的空间统计特征 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于聚集点,根据分组字段case field,计算空间统计特征 ...

  8. C++ Custom Control控件 向父窗体发送对应的消息

    向父窗体发送消息 ,这里只讲发送 WM_NOTIFY  消息, 其它消息是相同的 在 控件中的某个函数中 设置发送消息的程序 首先定义一个WM_NOTIFY消息的专用结构. NMHDR nm; nm. ...

  9. Unity3D脚本学习——运行时类

    AssetBundle 类,继承自Object.AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们.AssetBundles通过BuildPipeline.BuildAss ...

  10. SSM商城项目(二)

    1. 学习计划 1.将工程改造为基于SOA架构 2.商品列表查询功能实现. 2. 将工程改造为SOA架构 2.1. 分析 由于商城是基于soa的架构,表现层和服务层是不同的工程.所以要实现商品列表查询 ...