Жылдын күнү Leetcode Solution


Кыйынчылык деңгээли жеңил
Көп суралган ZScaler
Math

Көйгөйдү айтуу

"Жылдын күнү" көйгөйүндө бизге а аркан YYYY-MM-DD форматындагы датаны камтыйт Биздин милдет - ошол күндүн күндүк номерин кайтаруу.

Эгерде берилген күн 2020-01-05 болсо. Бул 5-жылдын 2020-январы, 5-жылдын 2020-күнү. Ошентип, биз 5 кайтып келет.

мисал

date = "2019-01-09"
9

Explanation:

 

Берилген мисалдагыдай эле, берилген күн 9-январь 2019-жыл. Бул 9-жылдын 2019-күнү. Демек, жооп 9.

Жылдын күнүнө карата мамиле Leetcode Solution

Киргизилген сап форматында берилгендиктен, саптан күндү, айды жана жылды бөлүп алышыбыз керек. Ошентип, биз кылды бөлүп, андан күндү, айды жана жылды бөлүп алабыз.

Ар бир айда күндөрдүн саны ар башка болгондуктан. Ошентип, ар бир айдагы күндөрдүн санын эсепке алуу үчүн бир массив колдонуп, ар бир айдагы күндөрдүн санын сактайбыз.

Эми биз февраль айындагы күндөрдүн санын эсептешибиз керек, анткени секирик жылы 29 күн, ал эми секирик эмес жыл үчүн 28 күн бар.

Бир жыл секирик жыл:

  1. эгер ал 400гө бөлүнсө
  2. ал 4кө бөлүнөт, бирок 100гө бөлүнбөйт.

Жылдын күнү Leetcode Solution

Жылдын күнүн эсептөө үчүн ар бир айдын январь айынан баштап берилген ай-1ге чейин бардык күндөрүн кошуңуз. Берилген күндөн баштап күндөрдүн санын кошуңуз. Бул берилген датага жылдын күнүн берет.

ишке ашыруу

Жылдын күнү үчүн 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).

шилтемелер