In diesem Artikel werden wir einige der wichtigen Hackerrank-Fragen und -Herausforderungen besprechen, die in verschiedenen Produktunternehmen bei der Einstellung gestellt werden. Wenn du jemand bist, der sich für Programmierung interessiert, dann ist diese Liste wichtiger Hackerrank-Fragen ein Muss, um sie zu lösen.
Hackerrank-Fragen mit Lösungen
Hier sind einige der am häufigsten gestellten Hackerrank-Fragen mit Lösungen.
- Anzahl der Inseln mit DFS
- Teilmengen-Summenproblem
- Ratte im Labyrinth
- Anzahl der Wege zur n-ten Treppe
- Sudoku-Problem
- Drehen Sie die Matrix um K-mal
- 0-1 Knapsack-Problem
- Erkennen einer Schleife in einer verketteten Liste
- Redundante geschweifte Klammern
- Prüfen von ausgeglichenen Klammern
- Median von zwei sortierten Arrays
Frage 1:
Beispielfragen von Hackerrank: Bankvergleich
Es gibt zwei Banken; Bank A und Bank B. Ihre Zinssätze sind unterschiedlich. Sie haben von beiden Banken Angebote erhalten, die sich auf den jährlichen Zinssatz, die Laufzeit und die Schwankungen des Zinssatzes über die gesamte Laufzeit beziehen.
Sie müssen das Angebot wählen, das Sie am wenigsten Zinsen kostet und das andere ablehnen. Rechnen Sie nach und treffen Sie eine kluge Wahl.
Die Rückzahlung des Kredits erfolgt monatlich und die gleichmäßige monatliche Rate (EMI) wird anhand der folgenden Formel berechnet:
EMI = loanAmount * monthlyInterestRate / ( 1 – 1 / (1 + monthlyInterestRate)^(numberOfYears * 12))
Einschränkungen:
1 <= P <= 1000000
1 <=T <= 50
1<= N1 <= 30
1<= N2 <= 30
Eingabeformat:
- Erste Zeile : P – Kapital (Darlehensbetrag)
- Zweite Zeile : T – Gesamtlaufzeit (in Jahren).
- Dritte Zeile: N1 ist die Anzahl der Zinssätze für einen bestimmten Zeitraum von Bank A. Der erste Zinssatz beginnt mit dem ersten Jahr, der zweite Zinssatz beginnt mit dem Ende des ersten Zinssatzes usw.
- Die nächste Zeile N1 enthält den Zinssatz und den entsprechenden Zeitraum.
- Nach N1 erhalten wir N2, d.h. die Anzahl der Zinssätze, die von der zweiten Bank angeboten werden.
- Nächste N2 Zeilen sind die Anzahl der Zinssätze für einen bestimmten Zeitraum von Bank B. Der erste Satz beginnt mit dem ersten Jahr und der zweite Satz beginnt mit dem Ende des ersten Satzes usw.
- Der Zeitraum und der Satz werden durch ein einzelnes Leerzeichen abgegrenzt.
Ausgabeformat: Ihre Entscheidung – entweder Bank A oder Bank B.
Erläuterung:
Beispiel Eingabe 1:
100002035 9.510 9.65 8.5310 6.95 8.55 7.9
Sample Ouput 1:
Bank B
Sample Input 2:
50000026313 9.53 6.910 5.6314 8.56 7.46 9.6
Beispiel Output 2:
Bank A
Lösung:
#include <stdio.h>#include<math.h>int main() { double p,s,mi,sum,emi,bank,sq; int y,n,k,i,yrs,l=0; scanf("%lf",&p); scanf("%d",&y); for(k=0;k<2;k++) { scanf("%d",&n); sum=0; for(i=0;i<n;i++) { scanf("%d",&yrs); scanf("%lf",&s); mi=0; sq=pow((1+s),yrs*12); emi= (p*(s))/(1-1/sq); sum= sum + emi; } bank=sum; } if(bank<bank) printf("Bank A"); else printf("Bank B"); return 0;}
Beispiel Hackerrank Fragen: One Egg
„One Egg“ ist ein Eierlieferant, der Eier an Einzelhändler liefert. Es gibt M Klassen von Eiern. Jede Klasse kann eine Anzahl von N Eiern enthalten (N kann gleich sein oder von Klasse zu Klasse variieren). Das Unternehmen nimmt per Post Bestellungen für X Eier entgegen. In der Antwort bestätigen sie, ob sie die Eier liefern können, mit einem „Danke“ und der Anzahl der Eier oder mit einem „Tut mir leid“ und der Anzahl der Eier, die sie liefern können. Sie geben auch an, wie viele Eier sie für welche Klasse liefern werden. Die bestellten Eier werden mit den verschiedenen Klassen verrechnet, wobei die größte Anzahl von Eiern zuerst verrechnet wird, dann der Restbetrag mit der zweitgrößten und so weiter. Das Unternehmen ist auch ein wenig abergläubisch. Wenn die Zahl der bestellten Eier größer oder gleich der Gesamtzahl der auf Lager befindlichen Eier ist, wird ein Ei einbehalten, und es wird eine Entschuldigung mit der Gesamtzahl der auf Lager befindlichen Eier minus eins und der Aufschlüsselung der Eier nach Klassen zurückgeschickt.
Hinweis: Wenn die Klassen die gleiche Anzahl von Eiern haben, sollte die zuerst eingegebene Klasse zum Anpassen ausgewählt werden.
Eingabeformat:
Die erste Zeile enthält zwei durch Leerzeichen getrennte ganze Zahlen, die die jeweiligen Werte von M (die Anzahl der Eierklassen) und X, die Anzahl der geordneten Eier, angeben Die folgenden M Zeilen enthalten jeweils eine ganze Zahl, die die Anzahl der in jeder Klasse verfügbaren Eier angibt
Ausgabeformat:
Die erste Zeile sollte lauten, wenn X kleiner als die Gesamtzahl der Eier ist, dann wird gedruckt: „Danke, Ihre Bestellung für X Eier ist angenommen“, wenn X größer oder gleich der Gesamtzahl der Eier ist, dann wird gedruckt: „Tut uns leid, wir können nur (Gesamtzahl der vorrätigen Eier -1) Eier liefern“, M Zeilen mit 3 Spalten: Erste Spalte – Anzahl der verfügbaren Eier in jeder Klasse Zweite Spalte – Eier, die jeder Klasse für diesen Auftrag zugeordnet sind Dritte Spalte – Saldo der Eier in jeder Klasse
Einschränkungen:
1 ≤ M ≤ 20 N ≥ 1 X ≥ 1
Beispiel Input 1:
5 150 50 15 80 10 5
Beispiel Output 1:
Thank you, your order for 150 eggs are accepted 50 50 0 15 15 0 80 80 0 10 5 5 5 0 5
Erläuterung:
Die Gesamtbestellung von 150 Eiern ist kleiner als die Gesamtzahl der Eier 50+15+80+10+5 = 160. Daher die Dankesnachricht. 150 wurde zunächst mit der Klasse mit der ersten höchsten Eierzahl 80 verrechnet. Der Saldo von 150-80 = 70 wurde mit der zweithöchsten Klasse von 50 verrechnet. Der Saldo von 70-50 = 20 wurde dann mit 15 verrechnet. Der Saldo von 20-15 = 5 wurde dann mit 10 verrechnet, so dass 5 Eier in dieser Klasse übrig blieben.
Beispiel Input 2:
4 250 80 50 70 20
Beispiel Output 2:
Sorry, we can only supply 219 eggs 80 80 0 50 50 0 70 70 0 20 19 1
Erklärung:
Die Gesamtbestellung von 250 Eiern war größer als die Gesamtanzahl der Eier 80+50+70+20 = 220. Daher die traurige Meldung. 250 wurde zunächst mit der Klasse mit der höchsten Eizahl 80 verrechnet. Der Saldo von 250-80 = 170 wurde mit der zweithöchsten Klasse von 70 verrechnet. Der Saldo von 170-70 = 100 wurde dann mit 50 verrechnet. Der Saldo von 100-50 = 50 wurde dann mit 20 verrechnet. Da der Saldo größer ist als die letzte Klasse von Eiern, sind alle bis auf ein Ei in dieser letzten Klasse übrig.
Lösung:
#include <stdio.h>int main() {int m,x,i,a,sum=0,s;scanf("%d %d",&m,&x);for(i=0;i<m;i++){scanf("%d",&a);sum=sum+a;}if(sum>x) printf("Thank you, your order for %d eggs are accepted\n",x);else{ printf("Sorry, we can only supply %d eggs\n",sum-1); x=sum-1;}for(i=0;i<m;i++){ if(x>=a) { printf("%d\t%d\t%d\n",a,a,0); x=x-a; } else if(x<a) { s=a-x; printf("%d\t%d\t%d\n",a,x,s); x=0; } else if(x==0) printf("%d\t%d\t%d\n",a,0,a); } return 0;}
Frage 3:
Beispielfragen zum Hackerrank: Der Milchmann und seine Flaschen
Ein Milchmann serviert Milch in abgepackten Flaschen unterschiedlicher Größe. Die möglichen Größen der Flaschen sind {1, 5, 7 und 10} Liter. Er möchte die gewünschte Menge mit möglichst wenigen Flaschen unabhängig von der Größe liefern. Ihr Ziel ist es, ihm zu helfen, die minimale Anzahl von Flaschen zu finden, die erforderlich ist, um die gegebene Nachfrage nach Milch zu befriedigen.
Eingabeformat:
- Die erste Zeile enthält die Anzahl der Testfälle N
- Nächste N Zeilen, jede enthält eine positive ganze Zahl Li, die der Nachfrage nach Milch entspricht.
Ausgabeformat:
Drucke für jede Eingabe Li die minimale Anzahl von Flaschen, die erforderlich ist, um die Nachfrage zu erfüllen
Einschränkungen:
1 <= N <= 1000 Li > 0 1 <= i <= N
Beispiel Input und Output:
2 7
Erläuterung:
Anzahl der Testfälle ist 2
Für 17 = 10*1 + 7*1 = 2
Für 65 = 10*6 + 5*1 = 7
Weitere Beispiele:
Für 99 = 10*9 + 7*1 + 1*2 = 12
Für 63 = 10*6 + 1*3 =9
Lösung:
#include <stdio.h>int main(){ int n,b=0,i,m,s=0; scanf("%d",&m); for( i=0;i<m;i++) { scanf("%d",&n); b=n/10; n=n%10; s=s+b; b=0; b=n/7; n=n%7; s=s+b; b=0; b=n/5; n=n%5; s=s+b; b=0; b=n/1; s=s+b; printf("%d\n",s); s=0; b=0; } return 0;}
Frage 4:
Beispiel-Hackerrank-Fragen: Brautjagd
Sam ist ein geeigneter Junggeselle. Er beschließt, sich im Leben niederzulassen und eine Familie zu gründen. Er geht auf Brautsuche. Er möchte ein Mädchen heiraten, das mindestens eine der 8 unten genannten Eigenschaften hat:
1) Das Mädchen sollte reich sein.
2) Das Mädchen sollte ein Ingenieur/Doktor sein.
3) Das Mädchen sollte schön sein.
4) Das Mädchen sollte 5,3″ groß sein.
5) Das Mädchen sollte in einem MNC arbeiten.
6) Das Mädchen sollte extrovertiert sein.
7) Das Mädchen sollte keine Brille tragen.
8) Das Mädchen sollte freundlich und ehrlich sein.
Er ist auf der Suche nach einer Braut, die einige oder alle der 8 oben genannten Eigenschaften hat. Auf der Suche nach einer Braut findet er vielleicht mehr als eine Anwärterin, die seine Frau werden soll.
In diesem Fall möchte er ein Mädchen wählen, dessen Haus seinem Haus am nächsten ist. Finde eine Braut für Sam, die die meisten Eigenschaften hat. Wenn es mehr als eine Anwärterin gibt, die gleich weit von Sams Haus entfernt ist, dann
print „“Polygamie nicht erlaubt““.
Wenn es kein passendes Mädchen gibt, das die Kriterien erfüllt, dann drucke „“Kein passendes Mädchen gefunden““
Gegeben eine Matrix N*M, Sams Haus ist bei (1, 1). In derselben Matrix ist der Standort eines heiratsfähigen Mädchens ebenfalls mit 1 bezeichnet. Daher sollte 1 am Standort (1, 1) nicht als Standort eines heiratsfähigen Mädchens betrachtet werden.
Die Qualitäten dieses Mädchens müssen nach Sams Kriterien aus der Anzahl der von Null verschiedenen Nachbarn (maximal 8), die sie hat, entschlüsselt werden. Ähnlich wie bei der obigen Bedingung sollte 1 am Ort (1, 1) nicht als Qualität eines Mädchens betrachtet werden. Siehe Beispiel für ein besseres Verständnis.
Finde Sam, eine passende Braut und drucke die Zeile und Spalte der Braut aus und finde die Anzahl der Qualitäten heraus, die die Braut besitzt.
Hinweis: Die Entfernung wird in der Anzahl der Sprünge in jede Richtung berechnet, d.h. (Links, Rechts, Oben, Unten und Diagonal)
Einschränkungen:
2 <= N,M <= 10^2
Eingabeformat:
- Die erste Zeile enthält die Zeile (N) und Spalte (M) der Häuser.
- Nächste N Zeilen enthalten die Daten über die Mädchen und ihre Eigenschaften.
Ausgabeformat:
Es enthält die Zeile und Spalte der Braut und die Anzahl der Eigenschaften, die die Braut besitzt, getrennt durch einen Doppelpunkt (d.h. :).
Beispiel Eingabe 1:
2 9
1 0 1 1 0 1 1 1
0 0 1 0 1 0 0 1
Beispiel Ausgabe 1:
Erläuterung:
Das Mädchen und die Eigenschaften sind vorhanden bei (1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,4),(2,6),(2,9).
Das Mädchen, das bei (1,3) anwesend ist, hat 2 Eigenschaften (d.h. (1,4)und (2,4)).
Das Mädchen, das bei (1,4) anwesend ist, hat 2 Eigenschaften.
Die Braut, die bei (1,6) anwesend ist, hat 2 Eigenschaften.
Die Braut an (1,7) hat 3 Eigenschaften.
Die Braut an (1,8) hat 3 Eigenschaften.
Die Braut an (1,9) hat 2 Eigenschaften.
Die Braut an (2,4) hat 2 Eigenschaften.
Die Braut an (2,6) hat 2 Eigenschaften.
Die Braut bei (2,9) hat 2 Eigenschaften.
Wie wir sehen, gibt es zwei Anwärterinnen, die die meisten Eigenschaften haben, eine ist bei (1,7) und eine andere bei (1,8).
Das Mädchen, das Sams Haus am nächsten ist, ist bei (1,7). Daher ist sie die Braut.
Das Ergebnis ist also 1:7:3.
Beispiel Eingabe 2:
6 6
1 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 1 0
0 0 1 1 1 0
0 0 1 1 1 0
0 0 0 0 0
Musterausgabe 2:
Erläuterung:
Die Braut und die Qualitäten sind vorhanden bei (3,3),(3,4),(3,5),(4,3),(4,4),(4,5),(5,3),(5,4),(5,5)
Die Braut, die bei (3,3) vorhanden ist, hat 3 Qualitäten (d.d. h. (3,4),(4,3) und (4,4)).
Die bei (3,4) anwesende Braut hat 5 Eigenschaften.
Die bei (3,5) anwesende Braut hat 3 Eigenschaften.
Die Braut bei (4,3) hat 5 Eigenschaften.
Die Braut bei (4,4) hat 8 Eigenschaften.
Die Braut bei (4,5) hat 5 Eigenschaften.
Die Braut in (5,3) hat 3 Eigenschaften.
Die Braut in (5,4) hat 5 Eigenschaften.
Die Braut in (5,5) hat 3 Eigenschaften.
Wie wir sehen, hat das Mädchen in (4,4) die größte Anzahl von Eigenschaften. Folglich ist sie die Braut.
Das Ergebnis ist also 4:4:8.
Lösung:
#include<stdio.h>int main(){ int n,m,i,g,j,p,q,max=0,cnt=0,k=1,c=0,u=1,x,y,t1,min=0, sc,e,f,ct=0,a,count=0,t2=0,t=0; scanf("%d %d",&n,&m); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&g); } } g=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { cnt=0; if(g==1) { t++; for(p=i-1;p<=i+1;p++) { for(q=j-1;q<=j+1;q++) { if(g==1) { cnt++; } } }cnt=cnt-1; a=cnt; k++; } } } for(k=1;k<=t;k++) { if(a>max) max=a; } if(max==0) { printf("No suitable girl found"); return 0; } for(k=1;k<=t;k++) { if(a==max) c++; } for(k=1;k<=t;k++) { t2=0; if(a==max) { for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(g==1) t2++; if(t2==k) { x=i; y=j; u++; } } } } } t1=u-1; if(c==1) printf("%d:%d:%d",x,y,max); else { for(u=1;u<=t1;u++) { sc=sqrt(((x-1) * (x-1)) + ((y-1)*(y-1)));; } min=sc; for(u=1;u<=t1;u++) { if(sc<min) min=sc; } for(u=1;u<=t1;u++) { if(sc==min) count++; } if(count>1) printf("Polygamy not allowed"); if(count==1) { for(u=1;u<=t1;u++) { if(sc==min) printf("%d:%d:%d",x,y,max); } } } return 0;}
Das kann man auch überprüfen:
- Must Practice Data Structures & Algorithms questions
- Must Practice C programming questions
.