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]

请输入要删除第几个元素: 

[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 ""; }

请参考  java 使用simpleDateFormat格式化日期 时间

java进制转换:

由十进制转化为其他进制:

 十进制转成二进制    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("不是回文");

 在判端两个字符串是否一样的时候,尽量使用equals方法判断,不要单单使用 == 这样有时候会出现问题

binarySearch :参考 http://blog.csdn.net/a1b2c3d4123456/article/details/51097161

此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外

如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。

⑴.binarySearch(object[ ], object key);

如果key在数组中,则返回搜索值的索引;否则返回-1或者”-“(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素索引。

卢卡斯定理

lucas(数论定理):

C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p    (p为质数)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏皮皮之路

【JDK1.8】JDK1.8集合源码阅读——LinkedHashMap

984
来自专栏desperate633

LintCode 二分查找题目分析代码

给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组...

912
来自专栏云霄雨霁

Java--集合类之Collection与Map

2318
来自专栏技术小站

(转)JAVA HashSet 去除重复值原理

Java中的set是一个不包含重复元素的集合,确切地说,是不包含e1.equals(e2)的元素对。Set中允许添加null。Set不能保证集合里元素的顺序。

2561
来自专栏皮皮之路

【JDK1.8】JDK1.8集合源码阅读——LinkedHashMap

34714
来自专栏Java帮帮-微信公众号-技术文章全总结

第十八天 集合-泛型&list接口&set接口【面试+工作】

泛型的使用:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。

1112
来自专栏积累沉淀

必须掌握的八种排序(3-4)--简单选择排序,堆排序

3、简单选择排序 (1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换; 然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第...

2149
来自专栏赵俊的Java专栏

不用加减乘除做加法

1734
来自专栏mathor

堆及其相关应用

 提到堆就不得不说到二叉树这个结构,堆就是一颗完全二叉树,什么叫完全二叉树,用一句话来概括就是:设二叉树的深度为h,除第h层外,其它各层的结点数都达到最大个数,...

952
来自专栏待你如初见

Day10

1492

扫码关注云+社区

领取腾讯云代金券