LeetCode Week Contest 153

萬年第四道不會,這該怎麼提高呀!!!
1184. Distance Between Bus Stops

class Solution {
    public int distanceBetweenBusStops(int[] distance, int start, int destination) {
        
        int dist=0,dist1=0;
        if(start>destination){
            int tmp=start;
            start=destination;
            destination=tmp;
        }
        for(int i=0;i<distance.length;i++){
            dist+=distance[i];
            if(i>=start && i<destination){
                dist1+=distance[i];
            }
        }
        return Math.min(dist-dist1,dist1);
    }
}

1185. Day of the Week

class Solution {
    
    public static int[][] monthLength={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
    
    public static String[] symbols={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    
    public static boolean isleap(int year){
        if(year%4==0&&year%100!=0||year%400==0)
            return true;
        else
            return false;
    }
    
    public String dayOfTheWeek(int day, int month, int year) {
         
        int sum=0,cur=0;
        for(int i=1971;i<year;i++){
            sum+=isleap(i)?366:365;
        }
        
        if(isleap(year)){     //29天
            for(int i=0;i<month-1;i++){
                cur+=monthLength[1][i];
            }
        }
        else{
            for(int i=0;i<month-1;i++){
                cur+=monthLength[0][i];
            }
        }
        sum+=cur+day;
        return symbols[(5+(sum-1)%7)%7];
        
    }
}

1186. Maximum Subarray Sum with One Deletion

class Solution {
    public int maximumSum(int[] arr) {
        
        int n=arr.length;
        int[] endHere=new int[n];
        endHere[0]=arr[0];
        int max=arr[0];
        for(int i=1;i<n;i++)
        {
            endHere[i]=Math.max(endHere[i-1]+arr[i],arr[i]);
            max=Math.max(max,endHere[i]);
        }
        
        int[] startHere=new int[n];
        startHere[n-1]=arr[n-1];
        for(int i=n-2;i>=0;i--){
            startHere[i]=Math.max(startHere[i+1]+arr[i],arr[i]);
            max=Math.max(max,startHere[i]);
        }
        
        for(int i=1;i<n-1;i++){
            max=Math.max(max,endHere[i-1]+startHere[i+1]);
        }
        return max;  
    }
}

1187. Make Array Strictly Increasing

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章