Java日记2018-06-13

2018-06-13  本文已影响0人  hayes0420
  1. 扑克牌顺子
public boolean isContinuous(int[] nums) {
    if (nums.length < 5)
        return false;
    Arrays.sort(nums);
    int cnt = 0;
    for (int num : nums)
        if (num == 0)
            cnt++;
    for (int i = cnt; i < nums.length - 1; i++) {
       //不是连续的,返回false
        if (nums[i + 1] == nums[i])
            return false;
        cnt -= nums[i + 1] - nums[i] - 1;
    }
    return cnt >= 0;
}
  1. 圆圈中最后剩下的数
public int LastRemaining_Solution(int n, int m) {
    if (n == 0)
        return -1;
    if (n == 1)
        return 0;
    return (LastRemaining_Solution(n - 1, m) + m) % n;
}
  1. 股票的最大利润
public class maxProfit {
    public static int max(int[] arr) {
        if(arr.length==0) return 0;
        int maxprofit=0;
        int min = arr[0];
        //循环从1开始,因为要使用最低的买入策略arr[0]
        for(int i=1;i<arr.length;i++) {
            //找到i-1次前的最小买入点,与当前的买入点
            min = Math.min(min, arr[i]);
            //找到i-1次前的最大买入,与当前的买入的比较
            maxprofit=Math.max(maxprofit, arr[i]-min);
        }
        
        return maxprofit;
    }
上一篇下一篇

猜你喜欢

热点阅读