წლის დღე Leetcode Solution


Რთული ტური Easy
ხშირად ეკითხებიან 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 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

ჯავის კოდი წლის დღისთვის

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).

ლიტერატურა