Leetcode шешімінің жылы күні


Күрделілік дәрежесі оңай
Жиі кіреді ZScaler
математика

Проблеманы шешу

«Жыл күні» проблемасында бізге а жол YYYY-MM-DD форматындағы күнді қамтиды. Біздің міндетіміз - сол күннің күндік нөмірін қайтару.

Егер берілген күн 2020-01-05 болса. Бұл 5 жылдың 2020-ші қаңтары, яғни 5 жылдың 2020-ші күні. Сонымен, біз 5-ке ораламыз.

мысал

date = "2019-01-09"
9

Түсіндіру:

 

Келтірілген мысалдағыдай, берілген күн - 9 қаңтар 2019 жыл. Бұл 9 жылдың 2019 күні. Демек, жауап 9 болады.

Leetcode Solution-ті жылдың күніне арналған тәсіл

Кіріс жол форматында берілгендіктен, жолдан күнді, айды және жылды бүтін деректер түрінде шығару керек. Сонымен, біз жолды бөліп, одан күнді, айды және жылды шығарамыз.

Әр ай сайын күндер саны әр түрлі болғандықтан. Әр айдағы күндер санын бақылау үшін біз бір массив қолданамыз және әр айдағы күндер санын сақтаймыз.

Енді бізге ақпан айындағы күндер санын есептеу керек, өйткені кібісе жыл үшін ол 29 күн, ал екінші жыл үшін 28 күн бар.

Жыл - секірісті жыл:

  1. егер ол 400-ге бөлінеді
  2. ол 4-ке бөлінеді, бірақ 100-ге бөлінбейді.

Leetcode шешімінің жылы күні

Жылдың күнін есептеу үшін әр айдың қаңтарынан бастап берілген айға дейінгі барлық күндер санын қосыңыз. Берілген күннен бастап күндер санын қосыңыз. Бұл берілген күнге жылдың күнін береді.

Іске асыру

Жыл күніне арналған C ++ коды

#include <bits/stdc++.h> 
using namespace std; 
int dayOfYear(string dt) {
  int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int y = stoi(dt.substr(0, 4)), m = stoi(dt.substr(5, 2)), d = stoi(dt.substr(8));
  if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
  while (--m > 0) d += days[m - 1];
  return d;
}
int main() 
{ 
 string date="2019-01-09";
 int ans=dayOfYear(date);
 cout<<ans<<endl;
 return 0;
}
9

Жыл күніне арналған Java коды

import java.util.Arrays;
import java.util.Set ;
import java.util.HashSet;
public class Tutorialcup {
    public static int dayOfYear(String S) {
        int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        String[] s = S.split("-");
        int y = Integer.parseInt(s[0]);
        int m = Integer.parseInt(s[1]);
        int d = Integer.parseInt(s[2]);
        if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
        while (--m > 0) d += days[m - 1];
        return d;
    } 
  public static void main(String[] args) {
         String date="2019-01-09";
         int ans=dayOfYear(date);
        System.out.println(ans);
  }
}
9

Жыл күнінің күрделілігін талдау Leetcode Solution

Уақыт күрделілігі

Жоғарыда келтірілген кодтың уақыт күрделілігі O (1).

Ғарыштың күрделілігі

Жоғарыда аталған кодтың кеңістігінің күрделілігі мынада O (1).

Әдебиеттер тізімі