বছরের লিটকোড সমাধান Day


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় জেডস্কেলার
ম্যাথ

সমস্যা বিবৃতি

"বছরের দিন" সমস্যাটিতে আমাদের দেওয়া হয় একটি স্ট্রিং এতে YYYY-MM-DD ফর্ম্যাটে একটি তারিখ রয়েছে। আমাদের কাজটি সেই তারিখের দিন সংখ্যাটি ফিরিয়ে দেওয়া।

প্রদত্ত তারিখটি 2020-01-05 হয়। এটি 5 সালের 2020 ই জানুয়ারী যা 5 বছরের 2020 তম দিন। সুতরাং, আমরা 5 ফিরে আসব।

উদাহরণ

date = "2019-01-09"
9

ব্যাখ্যা:

 

প্রদত্ত উদাহরণ হিসাবে, প্রদত্ত দিনটি 9 জানুয়ারী 2019 Which যা 9 সালের 2019 তম দিন So তাই উত্তরটি 9।

বছরের লেটকোড সমাধানের জন্য পদ্ধতির

ইনপুটটি স্ট্রিং ফর্ম্যাটে দেওয়া হওয়ায় আমাদের পূর্ণসংখ্যার ডেটা টাইপের স্ট্রিং থেকে তারিখ, মাস এবং বছর বের করতে হবে। সুতরাং, আমরা স্ট্রিংটি বিভক্ত করব এবং এ থেকে তারিখ, মাস এবং বছর বের করব।

যেহেতু প্রতিটি মাসে দিনের সংখ্যার আলাদা গণনা রয়েছে। সুতরাং প্রতি মাসের জন্য দিনের সংখ্যা ট্র্যাক রাখতে আমরা একটি অ্যারে ব্যবহার করব এবং প্রতিটি মাসের জন্য দিনের সংখ্যা সংরক্ষণ করব।

এখন আমাদের ফেব্রুয়ারি মাসের জন্য দিনের সংখ্যা পরিচালনা করতে হবে কারণ লিপ বছরের জন্য এটি 29 দিন এবং একটি নন-লিপ বছরের জন্য, এটির 28 সংখ্যা রয়েছে।

এক বছর একটি লাফ বছর:

  1. যদি এটি 400 দ্বারা বিভাজ্য হয়
  2. এটি 4 দ্বারা বিভাজ্য তবে 100 দ্বারা বিভাজ্য নয়।

বছরের লিটকোড সমাধান Day

বছরের দিন গণনা করার জন্য জানুয়ারী থেকে প্রতিটি মাসের দিনগুলির সংখ্যাটি প্রদত্ত মাস -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

বছরের লেটকোড সমাধানের জটিলতা বিশ্লেষণ

সময়ের জটিলতা

উপরের কোডটির সময় জটিলতা ও (1).

স্থান জটিলতা

উপরের কোডটির স্পেস জটিলতা ও (1).

তথ্যসূত্র