java 算法中常见的问题总结1(代码实现,不包含逻辑)
java实现小数精确两位,然后四舍五入方法:
详情参考 http://www.cnblogs.com/nayitian/p/3214178.html
例:
BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
return bg.doubleValue();
或
return (int)(money+0.5);
另一种四舍五入的方法:Math.round()
例:
int a =3.1315929035585537;
a=(double)Math.round(a*100)/100;
康托展开 主要用于求当前排列在所有排列中排第几(一般从零开始),也可用于搜索标记状态
详情参考 http://blog.csdn.net/zhongkeli/article/details/6966805
java中进制的转换
参考地址: http://blog.csdn.net/swandragon/article/details/4926457
API上面的 Integer类中的方法
java中删除数组中的某个元素
参考地址:http://www.cnblogs.com/hanfeihanfei/p/6146077.html
import java.util.Arrays;
import java.util.Scanner;
public class ArraysDelete { public static void main(String[] args) {
//删除数组中的某一个元素的方法:
//把最后一个元素替代指定的元素,然后数组缩容
Scanner sc =new Scanner(System.in);
int[] arr = new int[]{1,2,4,5,9,8,0};
System.out.println(Arrays.toString(arr));
System.out.println("请输入要删除第几个元素:");
int n = sc.nextInt(); sc.close();
//把最后一个元素替代指定的元素
arr[n-1] = arr[arr.length-1];
//数组缩容
arr = Arrays.copyOf(arr, arr.length-1);
System.out.println(Arrays.toString(arr));
} }
运行结果:
[1, 2, 4, 5, 9, 8, 0]
请输入要删除第几个元素:
3
[1, 2, 0, 5, 9, 8]
日期的计算:
1.java中的Calendar类的用法
例:计算当前时间是星期几
import java.util.Calendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Calendar c =Calendar.getInstance();
Scanner sc = new Scanner(System.in);
c.set(sc.nextInt(),sc.nextInt()-1, sc.nextInt());
System.out.println(c.get(Calendar.DAY_OF_WEEK)-1);
}
}
使用calendar的时候,需注意,外国的第一天是周日,周二是第二天
外国的月份是从0开始的,如:一月需要设置月份为0
2.时间戳转换
/**
* 日期格式时间戳 转换成字符串
* @param date 时间戳
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String timeStamp2Date(String seconds,String format) {
if(seconds == null || seconds.isEmpty() || seconds.equals("null")){
return "";
}
if(format == null || format.isEmpty()){
format = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new Date(Long.valueOf(seconds+"000")));
}
/**
* 日期格式字符串转换成时间戳
* @param date 字符串日期
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String date2TimeStamp(String date_str,String format){
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return String.valueOf(sdf.parse(date_str).getTime()/1000);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
十进制转成二进制
Integer.toBinaryString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成十六进制:
Integer.toHexString(int i)
由其他进制转换为二进制:
二进制转十进制
Integer.valueOf("1010",2).toString()
八进制转成十进制
Integer.valueOf("125",8).toString()
十六进制转成十进制
Integer.valueOf("ABCDEF",16).toString()
参考地址:http://www.cnblogs.com/icerainsoft/archive/2012/08/06/2624790.html
java回文快速办法:借助reverse()方法
parseLong(m, n):将n进制数m转化为十进制
long a = Long.parseLong(m, n);
long b = Long.parseLong(new StringBuilder(m).reverse().toString(), n);
if (a == b)
System.out.println("回文");
else
System.out.println("不是回文");
此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外
如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。
⑴.binarySearch(object[ ], object key);
如果key在数组中,则返回搜索值的索引;否则返回-1或者”-“(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素索引。