Dada una lista enlazada, cada Node consta de un par de variables enteras primero y segundo para contener los datos, y un puntero que apunta al siguiente Node en la lista. La tarea es encontrar la suma de min (primero, segundo) para cada Node.
Ejemplos:
Entrada: (2, 3) -> (3, 4) – > (1, 10) -> (20, 15) -> (7, 5) -> NULL
Salida: 26
2 + 3 + 1 + 15 + 5 = 26
Entrada: (7, 3) -> (3, 9) -> (5, 10) -> (20, 8) -> (19, 11) -> NULL
Salida: 30
3 + 3 + 5 + 8 + 11 = 30
Enfoque: recorrer toda la lista vinculada y para cada Node, si el primer elemento del Node es más pequeño en comparación con el segundo elemento de ese Node, agregamos el primer elemento a la variable que contiene la suma; de lo contrario, agregamos el segundo elemento.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <iostream> using namespace std; // Represents node of the linked list struct Node { int first; int second; Node* next; }; // Insertion in linked list void insert(Node** head, int f, int s) { Node* ptr = *head; Node* temp = new Node(); temp->first = f; temp->second = s; temp->next = NULL; if (*head == NULL) *head = temp; else { while (ptr->next != NULL) ptr = ptr->next; ptr->next = temp; } } // Function to return the required sum int calSum(Node* head) { int sum = 0; while (head != NULL) { // Check for smaller element if (head->first > head->second) sum += head->second; else sum += head->first; head = head->next; } return sum; } // Driver code int main() { Node* head = NULL; insert(&head, 2, 3); insert(&head, 3, 4); insert(&head, 1, 10); insert(&head, 20, 15); insert(&head, 7, 5); cout << calSum(head) << endl; return 0; }
Java
// Java implementation of the approach class GFG { // Represents node of the linked list static class Node { int first; int second; Node next; } // Insertion in linked list static Node insert(Node head, int f, int s) { Node ptr = head; Node temp = new Node(); temp.first = f; temp.second = s; temp.next = null; if (head == null) head = temp; else { while (ptr.next != null) ptr = ptr.next; ptr.next = temp; } return head; } // Function to return the required sum static int calSum(Node head) { int sum = 0; while (head != null) { // Check for smaller element if (head.first > head.second) sum += head.second; else sum += head.first; head = head.next; } return sum; } // Driver code public static void main(String args[]) { Node head = null; head = insert(head, 2, 3); head = insert(head, 3, 4); head = insert(head, 1, 10); head = insert(head, 20, 15); head = insert(head, 7, 5); System.out.print(calSum(head)); } } // This code is contributed by Arnab Kundu
Python3
# Python3 implementation of the approach # Represents node of the linked list class Node: def __init__(self, f, s): self.first = f self.second = s self.next = None # Insertion in linked list def insert(head, f, s): ptr = head temp = Node(f, s) if head == None: head = temp else: while ptr.next != None: ptr = ptr.next ptr.next = temp return head # Function to return the required sum def calSum(head): Sum = 0 while head != None: # Check for smaller element if head.first > head.second: Sum += head.second else: Sum += head.first head = head.next return Sum # Driver code if __name__ == "__main__": head = None head = insert(head, 2, 3) head = insert(head, 3, 4) head = insert(head, 1, 10) head = insert(head, 20, 15) head = insert(head, 7, 5) print(calSum(head)) # This code is contributed by Rituraj Jain
C#
// C# implementation of the approach using System; class GFG { // Represents node of the linked list public class Node { public int first; public int second; public Node next; } // Insertion in linked list static Node insert(Node head, int f, int s) { Node ptr = head; Node temp = new Node(); temp.first = f; temp.second = s; temp.next = null; if (head == null) head = temp; else { while (ptr.next != null) ptr = ptr.next; ptr.next = temp; } return head; } // Function to return the required sum static int calSum(Node head) { int sum = 0; while (head != null) { // Check for smaller element if (head.first > head.second) sum += head.second; else sum += head.first; head = head.next; } return sum; } // Driver code public static void Main(String[] args) { Node head = null; head = insert(head, 2, 3); head = insert(head, 3, 4); head = insert(head, 1, 10); head = insert(head, 20, 15); head = insert(head, 7, 5); Console.Write(calSum(head)); } } // This code contributed by Rajput-Ji
Javascript
<script> // JavaScript implementation of the approach // Represents node of the linked list class Node { constructor() { this.first = 0; this.second = 0; this.next = null; } } // Insertion in linked list function insert(head, f, s) { var ptr = head; var temp = new Node(); temp.first = f; temp.second = s; temp.next = null; if (head == null) head = temp; else { while (ptr.next != null) ptr = ptr.next; ptr.next = temp; } return head; } // Function to return the required sum function calSum(head) { var sum = 0; while (head != null) { // Check for smaller element if (head.first > head.second) sum += head.second; else sum += head.first; head = head.next; } return sum; } // Driver code var head = null; head = insert(head, 2, 3); head = insert(head, 3, 4); head = insert(head, 1, 10); head = insert(head, 20, 15); head = insert(head, 7, 5); document.write(calSum(head)); </script>
26
Publicación traducida automáticamente
Artículo escrito por Premdeep Toppo y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA