📜  链表中所有小于K的节点的Sum和Product(1)

📅  最后修改于: 2023-12-03 15:42:07.904000             🧑  作者: Mango

链表中所有小于K的节点的Sum和Product

在链表中,我们需要找到所有小于给定值K的节点,并进行求和和乘积的操作。这个问题可以使用遍历链表并在遇到小于K的节点时,将它们的值存储在一个数组中,然后进行相应的操作。下面是一个可能的解决方案。

解决方案
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] sumAndProductLessThanK(ListNode head, int k) {
        int[] result = new int[2];
        int[] values = new int[100];
        int count = 0;
        ListNode current = head;
        
        while (current != null) {
            if (current.val < k) {
                values[count++] = current.val;
            }
            
            current = current.next;
        }
        
        int sum = 0;
        int product = 1;
        
        for (int i = 0; i < count; i++) {
            sum += values[i];
            product *= values[i];
        }
        
        result[0] = sum;
        result[1] = product;
        
        return result;
    }
}

此解决方案创建了一个大小为100的数组(我们可以根据需要调整数组大小),然后遍历整个链表并将小于k的节点值存储在该数组中。然后,它计算该数组的总和和乘积,并将其存储在一个长度为2的结果数组中。最后返回结果数组。

使用该函数可以轻松地找到给定链表中小于k的所有节点的总和和乘积。此外,我们还可以创建一个单独的函数,该函数使用该解决方案并输出结果。下面是另一个可能的解决方案。

public class Main {
    public static void main(String[] args) {
        ListNode head = createLinkedList(new int[]{5, 2, 7, 4, 8});
        Solution solution = new Solution();
        int[] result = solution.sumAndProductLessThanK(head, 6);
        System.out.println("Sum: " + result[0] + ", Product: " + result[1]);
    }
    
    private static ListNode createLinkedList(int[] arr) {
        ListNode head = null;
        ListNode current = null;
        
        for (int i = 0; i < arr.length; i++) {
            if (head == null) {
                head = new ListNode(arr[i]);
                current = head;
            } else {
                current.next = new ListNode(arr[i]);
                current = current.next;
            }
        }
        
        return head;
    }
}

在这个例子中,我们创建一个整数数组,并使用它创建一个新的链表。然后我们调用sumAndProductLessThanK函数,将其传递给解决方案,然后输出结果。请注意,我们还需要创建一个辅助函数createLinkedList,该函数仅将给定的整数数组转换为链表。

总结

链表中所有小于k的节点的Sum和Product是一个简单但有意义的问题。解决方案通常涉及遍历链表并在遇到小于k的节点时,将它们的值存储在数组中。然后,我们可以使用该数组进行所需的计算并返回结果。如上所示,我们可以创建一个单独的函数来使用解决方案并输出结果。