BlackTDN :: LeetCode 25 em Harbour: Revertendo Nós em Grupos de K

_Créditos das imagens: Grok
# 🔁 LeetCode 25 em Harbour: Revertendo Nós em Grupos de K

### Por [Naldo DJ](https://github.com/naldodj) — Soluções LeetCode em Harbour/XBase

---

## 📌 Desafio

O problema **25. Reverse Nodes in k-Group** do LeetCode nos pede para reverter os nós de uma lista encadeada em grupos de tamanho `k`. Se o número total de nós não for múltiplo de `k`, os nós restantes devem permanecer na mesma ordem.

### Exemplo

- **Entrada:** `[1,2,3,4,5]`, `k = 2`
- **Saída esperada:** `[2,1,4,3,5]`

A implementação deve **manipular apenas os ponteiros dos nós**, sem alterar os valores armazenados.

---

## 🛠️ Implementação em Harbour

Você pode conferir o código completo aqui:  
📄 [`reverse_nodes_in_k-group.25.1.prg`](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/025/reverse_nodes_in_k-group.25.1.prg)

---

## 📚 Estrutura da Solução

O Harbour não possui estruturas nativas de listas encadeadas, então criei uma classe `TListNode` para simular esse comportamento, conforme o padrão esperado pelo LeetCode.

### Classe de Nó:

```harbour
function TListNode()
   static s_oTListNodeClass as object
   if (s_oTListNodeClass==NIL)
      s_oTListNodeClass:=HBClass():New("TLISTNODE")
      s_oTListNodeClass:AddData("value")
      s_oTListNodeClass:AddData("next",10)
      s_oTListNodeClass:AddMethod("New",@TListNodeNew())
      s_oTListNodeClass:Create()
   endif
   return(s_oTListNodeClass:Instance()) as object
```

---

## 🔄 Lógica de Reversão

A função principal `ReverseKGroup()` segue a abordagem iterativa com ponteiros, utilizando um nó "dummy" para simplificar a manipulação de cabeçalhos e reconexões.

### Trecho principal:

```harbour
while (.T.)
   // Verifica se há nós suficientes para o grupo
   oCurrent := oGroupPrevEnd:next
   nCount := 0
   while ((oCurrent!=NIL).and.(nCount

Comentários

Postagens mais visitadas