算法练习之leetcode系列1-3
public class Solution {
public String reverseWords(String s) {
String result[] = s.trim().split(" +");
String reverseResult[] = new String[result.length];
String reverse = "";
if(result.length>0){
for(int i = 0;i<result.length;i++){
reverseResult[i] = result[result.length-1-i].trim();
reverse += reverseResult[i].trim()+" ";
}
}
return reverse.trim();
}
}
2.Evaluate Reverse Polish Notation
public class Solution {
public int evalRPN(String[] tokens) {
List<String> numList = new ArrayList<String>();
for(int i = 0;i<tokens.length;i++){
if(tokens[i].equals("+")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))+Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("-")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))-Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("*")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))*Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else if(tokens[i].equals("/")){
String newNum = String.valueOf(Integer.valueOf(numList.get(numList.size()-2))/Integer.valueOf(numList.get(numList.size()-1)));
numList.remove(numList.size()-2);
numList.remove(numList.size()-1);
numList.add(newNum);
}else{
numList.add(tokens[i]);
}
}
return Integer.valueOf(numList.get(0));
}
}
3.Max Points on a Line(这个题真是很蛋疼啊,开始时真没想到还会包括出现重复点的情况,导致后来写的有点晕了=.=)
/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) { List<Integer> numlist = new ArrayList<Integer>();
HashMap<String, Integer> map;
HashMap<String, Integer> mapPoint;
Integer max = 0;
if (points.length == 1) {
max = 1;
}
for (int i = 0; i < points.length; i++) {
map = new HashMap<String, Integer>();
mapPoint = new HashMap<String, Integer>();
for (int j = i + 1; j < points.length; j++) {
String kString = "";
if ((points[i].x - points[j].x) != 0) {
if (points[i].y - points[j].y == 0) {
kString = String.valueOf(0);
} else {
float k = (float) (points[i].y - points[j].y)
/ (float) (points[i].x - points[j].x);
kString = String.valueOf(k);
}
if (map.containsKey(kString)) {
int num = map.get(kString) + 1;
map.remove(kString);
map.put(kString, num);
} else {
map.put(kString, 2);
}
} else if ((points[i].y - points[j].y) != 0
&& (points[i].x - points[j].x) == 0) {
kString = "no";
if (map.containsKey(kString)) {
int num = map.get(kString) + 1;
map.remove(kString);
map.put(kString, num);
} else {
map.put(kString, 2);
}
} else {
kString = "re";
if (mapPoint.containsKey(kString)) {
int num = mapPoint.get(kString) + 1;
mapPoint.remove(kString);
mapPoint.put(kString, num);
} else {
mapPoint.put(kString, 2);
}
} }
if (!map.isEmpty()) {
for (String key : map.keySet()) {
if (mapPoint.containsKey("re")
&& map.get(key) + mapPoint.get("re")
- 1 > max){
max = map.get(key) + mapPoint.get("re")
- 1;
} else if (map.get(key) > max) {
max = map.get(key);
} }
}
else {
if (mapPoint.containsKey("re")
&& mapPoint.get("re") > max) {
max = mapPoint.get("re");
}
}
} return max; }
}
算法练习之leetcode系列1-3的更多相关文章
- Leetcode系列之两数之和
Leetcode系列之两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你 ...
- 【算法题 14 LeetCode 147 链表的插入排序】
算法题 14 LeetCode 147 链表的插入排序: 解题代码: # Definition for singly-linked list. # class ListNode(object): # ...
- leetcode 系列文章目录
leetcode 系列文章目录 0. 两数之和1. 两数相加 2. 无重复字符的最长子串 3. 寻找两个有序数组的中位数 4. 最长回文子串 5. Z 字形变换 6. 整数反转 7. 字符串转换整数 ...
- C#刷遍Leetcode系列连载 索引
C#刷遍Leetcode系列文章 索引 索引(陆续发布中,请保持关注) C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - ...
- Leetcode系列-Search in Rotated Sorted Array
做Leetcode题有一段时间了,但都是断断续续的,到现在才做了30题左右,感觉对自己来说还是有点难度的.希望自己能继续坚持下去,在校招前能解决超过一百题吧. 其实这些题就是用来训练你的解题思路的,做 ...
- Manacher算法学习笔记 | LeetCode#5
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...
- 程序员进阶之算法练习:LeetCode专场
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由落影发表 前言 LeetCode上的题目是大公司面试常见的算法题,今天的目标是拿下5道算法题: 题目1是基于链表的大数加法,既考察基本 ...
- 最长回文子串 C++实现 java实现 leetcode系列(五)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- 【算法题目】Leetcode算法题思路:两数相加
在LeetCode上刷了一题比较基础的算法题,一开始也能解出来,不过在解题过程中用了比较多的if判断,看起来代码比较差,经过思考和改进把原来的算法优化了. 题目: 给出两个 非空 的链表用来表示两个非 ...
随机推荐
- SQLite数据库
数据持久化: 1.文件存储 适合用于存储一些简单的文本数据或二进制数据 存储数据:openFileOutput(文件名,操作模式),返回值为一个FileOutputStream对象,借助FileOut ...
- web前端之html5开发中常用的开发工具
正所谓“工欲善其事,必先利其器”,对Web开发人员来说,好工具的使用总会给人带来事半功倍的效果.正准备学习HTML5或者已经进行了一段时间的HTML5开发的童鞋,都有必要了解下,HTML5都有哪些开发 ...
- Node.js开发利器
开发工具 WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 做些小型项目用Sublime Text. Browserify:将你 ...
- MySQL基本数据类型
MySQL数据类型包括:整型.浮点型.日期类型.字符型,这里用表格的方式详细说明每个数据类型,这些只要记住常用的即可,需要再查阅. 整型 数据类型 存储范围 字节 TINYINT 有符号值:-128 ...
- mysql 数据库 表字段添加表情兼容
项目中的几个需要支持Emoji表情符号,手机自带的表情,其实添加也很简单: 1 修改数据库 配置my.cnf init-connect='SET NAMES utf8mb4' ...
- 【分享】图解Windows Server 2012 R2 配置IIS 8全过程
最近计划更换服务器,包括IIS服务器与数据库服务器,操作系统都是Windows Server 2012 R2,第一次接触Windows Server 2012,感觉比较新鲜,一路摸索完成了IIS 8 ...
- getRuntime
private static void test() { try { Process process = Runtime.getRuntime().exec("cmd"); Dat ...
- treap 模版
struct Treap { struct node { node *son[]; int key,siz,wei,cnt; node(int _key,node *f) { son[]=son[]= ...
- spring+redis
配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www ...
- iOS开发 点击某处横屏竖屏切换
typedef NS_ENUM(NSInteger, UIInterfaceOrientation) { UIInterfaceOrientationUnknown = UIDe ...