Day 35 of LeetCode Challenge

Cloud and DevOps Engineer with hands-on expertise in AWS, CI/CD pipelines, Docker, Kubernetes, and Monitoring tools. Adept at building and automating scalable, fault-tolerant cloud infrastructures, and consistently improving system performance, security, and reliability in dynamic environments.
Problem 1: Odd Even Linked List
Link to the problem: https://leetcode.com/problems/odd-even-linked-list/

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode oddEvenList(ListNode head) {
if(head==null || head.next==null) return head;
ListNode odd = head;
ListNode even = head.next;
ListNode res = new ListNode(0, odd);
ListNode evenHead = even;
while(odd.next!=null && even.next!=null){
odd.next=even.next;
odd=odd.next;
even.next=odd.next;
if(even==null) break;
even=even.next;
}
odd.next=evenHead;
return res.next;
}
}
Problem 2: Reorder List
Link to the problem: https://leetcode.com/problems/reorder-list/

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public void reorderList(ListNode head) {
if (head == null) return;
ListNode slow = head, fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
ListNode second = slow.next;
slow.next = null;
ListNode node = null;
while (second != null) {
ListNode temp = second.next;
second.next = node;
node = second;
second = temp;
}
ListNode first = head;
second = node;
while (second != null) {
ListNode temp1 = first.next, temp2 = second.next;
first.next = second;
second.next = temp1;
first = temp1;
second = temp2;
}
}
}
Problem 3: Reverse Node in k-Group
Link to the problem: https://leetcode.com/problems/reverse-nodes-in-k-group/

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
if(head == null) return null;
ListNode tail = head;
for(int i = 0; i < k; i++) {
if(tail == null) return head;
tail = tail.next;
}
ListNode newHead = reverse(head, tail);
head.next = reverseKGroup(tail, k);
return newHead;
}
private ListNode reverse(ListNode cur, ListNode end) {
ListNode prev = null;
while(cur != end) {
ListNode next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
}
return prev;
}
}
Problem 4: Longest Repeating Character Replacement
Link to the problem: https://leetcode.com/problems/longest-repeating-character-replacement/

class Solution {
public int characterReplacement(String s, int k) {
HashMap<Character, Integer> freqs = new HashMap<>();
int res = 0, i = 0, maxFreq = 0;
for (int j = 0; j < s.length(); j++) {
char c = s.charAt(j);
freqs.put(c, freqs.getOrDefault(c, 0) + 1);
maxFreq = Math.max(maxFreq, freqs.get(c));
while ((j - i + 1) - maxFreq > k) {
char left = s.charAt(i);
freqs.put(left, freqs.get(left) - 1);
i++;
}
res = Math.max(res, j - i + 1);
}
return res;
}
}
Problem 5: Largest Number
Link to the problem: https://leetcode.com/problems/largest-number/

class Solution {
public String largestNumber(int[] nums) {
String[] array = new String[nums.length];
for(int i=0; i<nums.length; i++){
array[i] = String.valueOf(nums[i]);
}
Arrays.sort(array,(a,b)-> (b+a).compareTo(a+b));
if(array[0].equals("0")){
return "0";
}
StringBuilder largest = new StringBuilder();
for(int i=0; i<array.length; i++){
largest.append(array[i]);
}
return largest.toString();
}
}




