This content originally appeared on DEV Community and was authored by I.K
🧠 Day 14 — Adjacent Patterns & Domain Resolution
🧩 DSA Problems [1 hr]
Problem: 3350. Adjacent Increasing Subarrays Detection II
💡 Approach: One-time Traversal
🧠 Intuition
We’re looking for adjacent strictly increasing subarrays — essentially, zones where the array keeps climbing before it resets.
We maintain two counters throughout one pass:
- 
cnt— current increasing streak - 
precnt— previous streak length 
Whenever the sequence stops increasing (nums[i] <= nums[i-1]):
- the previous count becomes 
precnt - we reset 
cntto 1 
At every step, there are two possible adjacent subarray pairs to consider:
- 
Current vs. Previous Segment: max potential = 
min(precnt, cnt) - 
Single Extended Segment: when both lie within one long increasing run, potential = 
cnt // 2 
By tracking both, we find the maximum adjacent pattern size in a single linear scan.
💻 Code
class Solution:
    def maxIncreasingSubarrays(self, nums: List[int]) -> int:
        n = len(nums)
        cnt, precnt, ans = 1, 0, 0
        for i in range(1, n):
            if nums[i] > nums[i - 1]:
                cnt += 1
            else:
                precnt, cnt = cnt, 1
            ans = max(ans, min(precnt, cnt))
            ans = max(ans, cnt // 2)
        return ans
⚙️ Complexity
| Measure | Complexity | 
|---|---|
| ⏱ Time | O(n) — single traversal | 
| 💾 Space | O(1) — constant memory | 
🔍 Key Learnings
- One-pass algorithms thrive on state compression — carrying only the info that truly matters.
 - Understanding segment relationships (current vs. previous) simplifies multi-phase problems.
 - Sometimes, the simplest recurrence hides the deepest efficiency.
 
🌍 SYSTEM DESIGN — Roadmap.sh [1 hr]
🌐 Domain Name System (DNS)
The Domain Name System is the phonebook of the internet — translating human-readable domain names into IP addresses that machines can understand.
When you type www.example.com in your browser, DNS resolves it to something like 93.184.216.34.
🧭 Hierarchical Architecture
- Root DNS Servers — top-level, directing queries to TLD (Top-Level Domain) servers.
 - 
TLD Servers — responsible for domains like 
.com,.org,.net, etc. - Authoritative DNS Servers — final source for a given domain’s records.
 
Your device or local resolver caches results to avoid redundant lookups — governed by TTL (Time To Live).
📑 Common DNS Records
| Record Type | Purpose | 
|---|---|
| 🧭 A | Maps domain to IPv4 address | 
| 🧭 AAAA | Maps domain to IPv6 address | 
| 📬 MX | Mail Exchange — email routing | 
| 🌍 CNAME | Canonical Name — points to another domain | 
| 🧾 NS | Name Server — specifies authoritative DNS servers | 
🚀 Managed DNS Providers
Modern systems often use managed DNS to add reliability and routing intelligence.
Examples include:
⚖️ Routing Policies
| Policy Type | Description | 
|---|---|
| ⚖️ Weighted Round Robin | Distribute traffic based on server weights — useful for load balancing or A/B testing. | 
| 🕓 Latency-Based Routing | Direct users to the server with the lowest network latency. | 
| 📍 Geolocation Routing | Route users to the geographically closest data center. | 
🧠 Reflection
Both today’s topics — array traversal and DNS resolution — rely on hierarchy and memory.
- The algorithm builds meaning incrementally — one element at a time.
 - DNS builds resolution hierarchically — one level at a time.
 
Both turn complex discovery into efficient lookup.
✅ Day 14 Summary:
Whether in data or domains, efficient systems remember just enough and resolve just in time.
This content originally appeared on DEV Community and was authored by I.K
I.K | Sciencx (2025-10-30T16:28:44+00:00) Daily DSA and System Design Journal – 14. Retrieved from https://www.scien.cx/2025/10/30/daily-dsa-and-system-design-journal-14/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.