Documente Academic
Documente Profesional
Documente Cultură
Programul în JAVA :
import java.util.Arrays;
1
if(i>neg_num || j>=nums.length) break;
nums[i]+= max*(i+1);
swap_nums(nums,i,j);
}
i = nums.length-1;
while(i>=neg_num){
int div = nums[i]/max;
if(div == 0) i--;
else{
nums[i]%=max;
swap_nums(nums,i,neg_num+div-2);
}
}
}
private static void swap_nums(int[] nums, int i , int
j){
int t = nums[i];
nums[i] = nums[j];
nums[j] = t;
}
}
49. Scrieți un program Java pentru a aranja elementele unui tablou dat de
numere întregi în care toate numerele întregi pozitive apar înaintea tuturor
numerelor întregi negative
2
Programul în JAVA :
import java.util.Arrays;
public class Main {
arr_size = arra_nums.length;
for (int i = 0; i <arr_size; i++){
j = i;
Programul în JAVA :
import java.util.Arrays;
3
{
static int[] rearrange(int[] new_arra, int n)
{
int temp[] = new int[n];
flag = !flag;
}
return temp;
}
result = rearrange(nums,nums.length);
}
}
4
51.Scrieți un program Java pentru a separa 0-uri în partea stângă și 1-uri în
partea dreaptă a unei matrice de 0-uri și 1-uri în ordine aleatorie.
Programul în JAVA :
import java.util.Arrays;
int n = arr.length;
5
return arr;
}
}
Programul în JAVA :
import java.util.Arrays;
public class Main
{
result = separate_odd_even(nums);
6
right_side)
left_side++;
Programul în JAVA :
import java.io.*;
import java.util.Arrays;
public class Main
{
public static void main (String[] args)
{
int nums[] = {45, 20, 100, 23, -5, 2, -6};
int result[];
System.out.println("Original Array ");
System.out.println(Arrays.toString(nums));
result = next_greatest_num(nums);
System.out.println("The modified array:");
System.out.println(Arrays.toString(result));
7
}
54. Scrieți un program Java care să verifice dacă un array dat conține un
subarray cu suma 0.
Exemplu:
Input :
nums1= { 1, 2, -2, 3, 4, 5, 6 }
nums2 = { 1, 2, 3, 4, 5, 6 }
nums3 = { 1, 2, -3, 4, 5, 6 }
Output:
Does the said array contain a subarray with 0 sum: true
Does the said array contain a subarray with 0 sum: false
Does the said array contain a subarray with 0 sum: true
Programul în JAVA :
import java.util.Set;
import java.util.HashSet;
import java.util.Arrays;
8
{
Set<Integer> set = new HashSet<>();
set.add(0);
int suba_sum = 0;
for (int i = 0; i < nums.length; i++)
{
suba_sum += nums[i];
if (set.contains(suba_sum)) {
return true;
}
set.add(suba_sum);
}
return false;
}
9
55. Scrieți un program Java care să tipărească toate sub-rețelele cu suma 0
prezente într-o anumită matrice de numere întregi.
Exemplu:
Input :
nums1 = { 1, 3, -7, 3, 2, 3, 1, -3, -2, -2 }
nums2 = { 1, 2, -3, 4, 5, 6 }
nums3= { 1, 2, -2, 3, 4, 5, 6 }
Output:
Sub-arrays with 0 sum : [1, 3, -7, 3]
Sub-arrays with 0 sum : [3, -7, 3, 2, 3, 1, -3, -2]
Sub-arrays with 0 sum : [1, 2, -3]
Sub-arrays with 0 sum : [2, -2]
Programul în JAVA :
import java.util.*;
import java.lang.*;
public class Main
{
public static void print_all_Subarrays(int[] A)
{
}
}
}
10
}
56. Scrieți un program Java pentru a sorta un anumit tablou binar în timpi
liniari.
Timp liniar: se spune că un algoritm ia timp liniar, sau timp O(n),
dacă complexitatea sa în timp este O(n). Informal, aceasta înseamnă că
timpul de rulare crește cel mult liniar cu dimensiunea intrării. Mai precis,
aceasta înseamnă că există o constantă c astfel încât timpul de rulare să
fie de cel mult cn pentru fiecare intrare de dimensiune n. De exemplu, o
procedură care adună toate elementele unei liste necesită timp
proporțional cu lungimea listei, dacă timpul de adăugare este constant
sau, cel puțin, este limitat de o constantă.
11
Timpul liniar este cea mai bună complexitate de timp posibilă în
situațiile în care algoritmul trebuie să citească secvenţial întreaga intrare.
Prin urmare, multe cercetări au fost investite în descoperirea algoritmilor
care prezintă timp liniar sau, cel puțin, timp aproape liniar. Această
cercetare include atât metode software, cât și metode hardware. Există
mai multe tehnologii hardware care exploatează paralelismul pentru a
oferi acest lucru. Un exemplu este memoria adresabilă conținutului.
Acest concept de timp liniar este utilizat în algoritmii de potrivire a
șirurilor, cum ar fi algoritmul Boyer-Moore și algoritmul lui Ukkonen.
Exemplu:
Input : b_nums[] = { 0, 1, 1, 0, 1, 1, 0, 1, 0, 0 }
Output: After sorting: [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
Programul în JAVA :
import java.util.Arrays;
public class Main
{
}
}
12
Rezultatul rulării programului :
Programul în JAVA :
import java.lang.Math;
import java.util.Arrays;
public class Main
{
static boolean is_consecutive(int nums[], int i, int
j, int min, int max)
{
if (max - min != j - i) {
return false;
}
return true;
}
13
for (int j = i + 1; j < nums.length; j++)
{
min_val = Math.min(min_val, nums[j]);
max_val = Math.max(max_val, nums[j]);
if (is_consecutive(nums, i, j,
min_val, max_val))
{
if (len < max_val - min_val + 1)
{
len = max_val - min_val +
1;
start = i;
end = j;
}
}
}
}
System.out.print(nums[x]+" ");
}
}
14
58. Având în vedere două tablouri sortate A și B de dimensiunea p și q, scrieți
un program Java pentru a îmbina elementele lui A cu B, menținând ordinea
sortată, adică umpleți A cu primele p elemente cele mai mici și umpleți B cu
elementele rămase.
Exemplu:
Input :
int[] A = { 1, 5, 6, 7, 8, 10 }
int[] B = { 2, 4, 9 }
Output:
Sorted Arrays:
A: [1, 2, 4, 5, 6, 7]
B: [8, 9, 10]
Programul în JAVA :
import java.util.Arrays;
B[k - 1] = first_arr;
}
}
}
15
int q = B.length;
System.out.println("Original Arrays:");
System.out.println("A: " +
Arrays.toString(A));
System.out.println("B: " +
Arrays.toString(B));
merge_sorted_arrays(A, p, B, q);
System.out.println("\nSorted Arrays:");
System.out.println("A: " +
Arrays.toString(A));
System.out.println("B: " +
Arrays.toString(B));
}
}
59. Scrieți un program Java pentru a găsi produsul maxim a două numere întregi
într-o matrice dată de numere întregi.
Exemplu:
Input :
nums = { 2, 3, 5, 7, -7, 5, 8, -5 }
Output:
Pair is (7, 8), Maximum Product: 56
Programul în JAVA :
import java.util.*;
public class Main
{
public static void find_max_product(int[] nums)
{
int max_pair_product = Integer.MIN_VALUE;
int max_i = -1, max_j = -1;
16
+)
{
if (max_pair_product < nums[i] *
nums[j])
{
max_pair_product = nums[i] *
nums[j];
max_i = i;
max_j = j;
}
}
}
System.out.println("\n");
System.out.println("Pair is (" + nums[max_i]
+ ", " + nums[max_j] + "), Maximum Product: " +
(nums[max_i]*nums[max_j]));
}
find_max_product(nums);
}
}
Rezultatul rulării programului :
60. Scrieți un program Java pentru a amesteca o serie dată de numere întregi.
Exemplu:
Input :
nums = { 1, 2, 3, 4, 5, 6 }
Output:
Shuffle Array: [4, 2, 6, 5, 1, 3]
Programul în JAVA :
import java.util.Arrays;
import java.util.Random;
class solution
{
public static void shuffle(int nums[])
{
17
for (int i = nums.length - 1; i >= 1; i--)
{
Random rand = new Random();
swap_elements(nums, i, j);
}
}
private static void swap_elements(int[] nums, int i,
int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
public static void main (String[] args)
{
int[] nums = { 1, 2, 3, 4, 5, 6 };
System.out.println("Original Array:
"+Arrays.toString(nums));
shuffle(nums);
System.out.println("Shuffle Array:
"+Arrays.toString(nums));
}
}
Programul în JAVA :
import java.util.Arrays;
18
nums[i] = nums[j];
nums[j] = t_nums;
}
62.Scrieți un program Java pentru a găsi indicii de echilibru dintr-o matrice dată
de numere întregi.
Un indice de echilibru al unei secvențe este un indice al secvenței astfel
încât suma elementelor la indici mai mici este egală cu suma elementelor la
indici mai mari.
De exemplu, într-o secvență A:
A0 = -7
A1 = 1
19
A2 = 5
A3 = 2
A4 = -4
A5 = 3
A6 = 0
3 este un indice de echilibru, deoarece:
A0 + A1 + A2 = A4 + A5 + A6
Exemplu:
Input :
nums = {-7, 1, 5, 2, -4, 3, 0}
Output:
Equilibrium indices found at : 3
Equilibrium indices found at : 6
Programul în JAVA :
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {-7, 1, 5, 2, -4, 3, 0};
System.out.println("Original array:
"+Arrays.toString(nums));
equlibrium_indices(nums);
}
20
System.out.println("Equilibrium indices
found at : "+i);
}
runningSum += n;
}
}
}
Programul în JAVA :
import java.util.Arrays;
left_element[0] = 1;
for (int i = 1; i < n; i++) {
left_element[i] = nums[i - 1] * left_element[i
- 1];
}
right_element[n - 1] = 1;
21
for (int j = n - 2; j >= 0; j--) {
right_element[j] = nums[j + 1] *
right_element[j + 1];
}
}
}
22