Publicerad den 12 mars 2020

I den här artikeln kommer vi att diskutera några av de viktiga Hackerrank-frågorna och utmaningarna som ställs i olika rekryteringar av produktföretag. Om du är någon som är intresserad av programmering är den här listan med viktiga Hackerrank-frågor ett måste att lösa.

Hackerrank-frågor med lösningar

Här är några av de mest ställda Hackerrank-frågorna med lösningar.

  • Antal öar med hjälp av DFS
  • Subset Sum Problem
  • Problem med råttor i en labyrint
  • Antal sätt att nå den n:e trappan
  • Sudoku-problem
  • Rota matrisen med K gånger
  • 0-1 Knapsackproblem
  • Detektera en slinga i en länkad lista
  • Redundanta parenteser
  • Kontroll av balanserade parenteser
  • Medianvärdet av två sorterade matriser

Fråga 1:

Exempel på Hackerrank-frågor: Bankjämförelse

Det finns två banker: Bank A och Bank B. Deras räntesatser varierar. Du har fått erbjudanden från båda bankerna när det gäller årsränta, löptid och variationer i räntan under hela löptiden.

Du måste välja det erbjudande som kostar dig minst ränta och förkasta det andra. Gör beräkningen och gör ett klokt val.

Låneåterbetalningen sker månadsvis och Equated Monthly Installment (EMI) beräknas med hjälp av formeln nedan :

EMI = loanAmount * monthlyInterestRate / ( 1 – 1 / (1 + monthlyInterestRate)^(numberOfYears * 12))

Begränsningar:

1 <= P <= 1000000

1 <=T <= 50

1<= N1 <= 30

1<= N2 <= 30

Inputformat:

  • Första raden: P – kapital (lånebelopp)
  • Seconde raden: T – Total löptid (i år).
  • Tredje raden: N1 är antalet ränteplattor för en viss period från bank A. Den första plattan börjar från det första året och den andra plattan börjar från slutet av den första plattan och så vidare.
  • Nästa N1-linje kommer att innehålla räntesatsen och dess period.
  • Efter N1-linjerna kommer vi att få N2, det vill säga antalet plattor som erbjuds av den andra banken.
  • Nästa N2-rader är antalet räntesatser för en viss period från bank B. Den första räntesatsen börjar från och med det första året och den andra räntesatsen börjar från slutet av den första räntesatsen och så vidare.
  • Perioden och räntesatsen kommer att avgränsas av ett enkelt vitt mellanslag.

Outputformat: Ditt beslut – antingen bank A eller bank B.

Förklaring:

Exempel på inmatning 1:

100002035 9.510 9.65 8.5310 6.95 8.55 7.9

Provresultat 1:

Bank B

Provresultat 2:

50000026313 9.53 6.910 5.6314 8.56 7.46 9.6

Sampelutgång 2:

Bank A

Lösning:

#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;}

Exempel på Hackerrank-frågor: One Egg

”One Egg” är ett företag som levererar ägg till återförsäljare. De har M klasser av ägg. Varje klass kan ha N antal ägg (N kan vara detsamma eller variera från klass till klass). De tar emot beställningar via post för X ägg. Som svar bekräftar de om de kan leverera äggen med ett ”Tack” och antalet ägg eller med ett ”Ledsen” och det antal ägg som de inte kan leverera. De nämner också fördelningen av äggen per klass som de kommer att leverera. De beställda äggen justeras mot de olika klasserna, där det största antalet ägg justeras först och sedan resten mot den näst största klassen och så vidare. Företaget är också lite vidskepligt. Om antalet beställda ägg är större än eller lika med det totala antalet ägg i lager behåller de ett ägg och svarar med en ”Sorry”-not med det totala antalet ägg i lager minus ett och en uppdelning av äggen per klass.

Anmärkning: Om klasserna har samma antal ägg ska den klass som anges först väljas för justering.

Inputformat:

Första raden innehåller två heltal separerade från mellanslag som anger respektive värden för M (antalet klasser med ägg) och X, antalet beställda ägg De följande M raderna innehåller ett heltal vardera som anger antalet ägg som finns tillgängliga i varje klass

Output Format:

Första raden bör vara följande: Om X är mindre än det totala antalet ägg skrivs ut: ”Tack, din beställning på X ägg accepteras.” Om X är större än eller lika med det totala antalet ägg skrivs ut: ”Ledsen, men vi kan bara leverera (totalt antal ägg i lager -1) ägg.” M rader med tre kolumner: Första kolumnen – Antal tillgängliga ägg i varje klass Andra kolumnen – Ägg som tilldelats varje klass för den beställningen Tredje kolumnen – Balanserade ägg i varje klass

Krav:

1 ≤ M ≤ 20 N ≥ 1 X ≥ 1

Sampel Input 1:

5 150 50 15 80 10 5 

Sampelutgång 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 

förklaring:

Den totala beställningen av 150 ägg är mindre än det totala antalet ägg 50+15+80+10+5 = 160. Därav meddelandet Tack. 150 justerades först mot Klass med det första högsta antalet ägg 80. Saldot på 150-80 = 70 justerades mot den näst högsta klassen med 50 ägg. Saldot 70-50 = 20 justerades sedan mot 15. Saldot 20-15 = 5 justerades sedan mot 10, vilket gav 5 ägg i den klassen.

Sampel input 2:

4 250 80 50 70 20 

Sampel output 2:

Sorry, we can only supply 219 eggs 80 80 0 50 50 0 70 70 0 20 19 1 

Förklaring:

Den totala beställningen på 250 ägg var större än det totala antalet ägg 80+50+70+20 = 220. Därav det ledsna meddelandet. 250 justerades först mot Klass med det första högsta antalet ägg 80. Balansen på 250-80 = 170 justerades mot den näst högsta klassen med 70 ägg. Saldot 170-70 = 100 justerades sedan mot 50. Saldot 100-50 = 50 justerades sedan mot 20. Eftersom balansen är större än den sista klassen av ägg återstår alla utom ett ägg i den sista klassen.

Lösning:

#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;}

Fråga 3:

Exempel på Hackerrankfrågor: Mjölkmannen och hans flaskor

En mjölkman serverar mjölk i förpackade flaskor av olika storlek. De möjliga storlekarna på flaskorna är {1, 5, 7 och 10} liter. Han vill leverera den önskade kvantiteten med hjälp av så få flaskor som möjligt oavsett storlek. Ditt mål är att hjälpa honom att hitta det minsta antal flaskor som krävs för att leverera den givna efterfrågan på mjölk.

Inputformat:

  • Den första raden innehåller antalet testfall N
  • Nästa N rader, var och en innehåller ett positivt heltal Li som motsvarar efterfrågan på mjölk.

Outputformat:

För varje inmatning Li, skriv ut det minsta antal flaskor som krävs för att uppfylla efterfrågan

Begränsningar:

1 <= N <= 1000 Li > 0 1 <= i <= N

Sampel på inmatning och utmatning:

2 7

förklaring:

Antalet testfall är 2

För 17 = 10*1 + 7*1 = 2

För 65 = 10*6 + 5*1 = 7

För några fler exempel:

För 99 = 10*9 + 7*1 + 1*2 = 12

För 63 = 10*6 + 1*3 = 9

Lösning:

#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;}

Fråga 4:

Exempel på Hackerrankfrågor: Bride Hunting

Sam är en lämplig ungkarl. Han bestämmer sig för att slå sig ner i livet och bilda familj. Han ger sig ut på brudjakt. Han vill gifta sig med en flicka som har minst en av de åtta egenskaper som nämns nedan:-

1) Flickan ska vara rik.

2) Flickan ska vara ingenjör/läkare.

3) Flickan ska vara vacker.

4) Flickan ska vara 5,3″ lång.

5) Flickan bör arbeta i ett multinationellt företag.

6) Flickan bör vara extrovert.

7) Flickan bör inte ha glasögon.

8) Flickan bör vara snäll och ärlig.

Han är på jakt efter en brud som har någon eller några av de 8 egenskaperna som nämns ovan. På brudjakt kan han hitta fler än en utmanare till att bli hans fru.

I så fall vill han välja en flicka vars hus ligger närmast hans hus. Hitta en brud till Sam som har maximala egenskaper. Om det finns fler än en kandidat som befinner sig på samma avstånd från Sams hus, så

skriv ut ””Polygami ej tillåten””.

Om det inte finns någon lämplig flicka som uppfyller kriterierna, skriv ut ””Ingen lämplig flicka hittad””

Givet en matris N*M ligger Sams hus på (1, 1). Det betecknas med 1. I samma matris betecknas platsen för en giftermålsduglig flicka också med 1. Därför bör 1 på platsen (1, 1) inte betraktas som platsen för en giftermålsduglig flickas plats.

Flickans egenskaper, enligt Sams kriterier, måste avkodas från det antal grannar som inte är noll (max 8-vägs) som hon har. I likhet med villkoret ovan ska 1 på platsen (1, 1) inte betraktas som en flickas egenskap. Se exempelavsnittet för att få en bättre förståelse.

Finn Sam, en lämplig brud och skriv ut raden och kolumnen för bruden och ta reda på antalet egenskaper som bruden besitter.

NOTAT: Avståndet beräknas i antal hopp i alla riktningar, dvs. (Vänster, höger, uppåt, nedåt och diagonalt)

Krav:

2 <= N,M <= 10^2

Inputformat:

  • Första raden innehåller husens rad (N) och kolumn (M).
  • Nästa N rader innehåller uppgifter om flickor och deras egenskaper.

Outputformat:

Det kommer att innehålla rad och kolumn för bruden och antalet egenskaper som bruden besitter, åtskilda med ett kolon (dvs. :).

Exempel på indata 1:

2 9

1 0 1 1 1 0 1 1 1 1 1

0 0 0 0 1 0 1 0 0 0 1 1

Exempel på utdata 1:

Förklaring:

Flickan och kvaliteterna finns vid (1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,4),(2,6),(2,9).

Flickan som befinner sig vid (1,3) har 2 egenskaper (dvs. (1,4)och (2,4)).

Flickan som befinner sig vid (1,4) har 2 egenskaper.

Bruden som befinner sig vid (1,6) har 2 egenskaper.

Bruden som är närvarande vid (1,7) har 3 kvaliteter.

Bruden som är närvarande vid (1,8) har 3 kvaliteter.

Bruden som är närvarande vid (1,9) har 2 kvaliteter.

Bruden som är närvarande vid (2,4) har 2 kvaliteter.

Bruden som är närvarande vid (2,6) har 2 kvaliteter.

Bruden som finns på (2,9) har 2 egenskaper.

Som vi ser finns det två utmanare som har maximala egenskaper, en finns på (1,7) och en annan på (1,8).

Den flicka som är närmast Sams hus finns på (1,7). Därför är hon bruden.

Härav blir resultatet 1:7:3.

Exempel på indata 2:

6 6

1 0 0 0 0 0

0 0 0 0 0 0

0 0 1 1 1 0

0 0 0 1 1 1 1 0

0 0 1 1 1 1 0

0 0 0 0 0 0 0

Sampelutgång 2:

Förklaring:

Bruden och egenskaperna finns vid (3,3),(3,4),(3,5),(4,3),(4,4),(4,5),(5,3),(5,4),(5,4),(5,5)

Brunden som finns vid (3,3) har 3 egenskaper (i.dvs. (3,4),(4,3) och (4,4)).

Brunnen som befinner sig vid (3,4) har 5 egenskaper.

Brunnen som befinner sig vid (3,5) har 3 egenskaper.

Bruden som finns på (4,3) har 5 egenskaper.

Bruden som finns på (4,4) har 8 egenskaper.

Bruden som finns på (4,5) har 5 egenskaper.

Bruden som finns i (5,3) har 3 kvaliteter.

Bruden som finns i (5,4) har 5 kvaliteter.

Bruden som finns i (5,5) har 3 kvaliteter.

Som vi ser har flickan som finns i (4,4) det högsta antalet kvaliteter. Därför är hon bruden.

Därmed blir resultatet 4:4:8.

Lösning:

#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;}

Du kan också kontrollera dessa:

  • Must Practice Data Structures & Algorithms questions
  • Must Practice C programming questions
Om du har synpunkter på denna artikel och vill förbättra den, vänligen skriv till [email protected]

.

Lämna ett svar

Din e-postadress kommer inte publiceras.