वर्ष का दिन Leetcode Solution


कठिनाई स्तर आसान
में अक्सर पूछा 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 में जोड़ दें। दी गई तारीख से दिनों की संख्या जोड़ें। यह दी गई तारीख के लिए वर्ष का दिन देगा।

कार्यान्वयन

वर्ष के दिन के लिए सी ++ कोड

#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 समाधान के दिन की जटिलता विश्लेषण

समय की जटिलता

उपरोक्त कोड की समय जटिलता है ओ (1).

अंतरिक्ष की जटिलता

उपरोक्त कोड की अंतरिक्ष जटिलता है ओ (1).

संदर्भ