链表中所有小于K的节点的Sum和Product
给定一个链表和一个键 K。任务是计算列表中小于键 K 的所有节点的总和和乘积。
例子:
Input: 12 -> 15 -> 9 -> 11 -> 5 -> 6, K = 9
Output: Sum = 11, Product = 30
Input: 13 -> 4 -> 16 -> 9 -> 22 -> 45 -> 5 -> 16 -> 6, K = 10
Output: Sum = 24, Product = 1080
方法:从头部开始遍历并检查当前节点的值是否小于K。如果是,则将该节点添加到总和中并乘以该节点为产品并在列表中向前移动。
下面是上述方法的实现:
C++
// C++ program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
#include
using namespace std;
// structure of a node
struct Node {
int data;
Node* next;
};
// function to get a new node
Node* getNode(int data)
{
Node* newNode = new Node;
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// function to sum all the nodes from the list
// that are lesser than the specified value K
int sumLesserNodes(Node** head_ref, int K)
{
Node* temp = *head_ref;
int sum = 0;
while (temp != NULL) {
if (temp->data < K)
sum += temp->data;
temp = temp->next;
}
return sum;
}
// function to product all the nodes from the list
// that are lesser than the specified value K
int productLesserNodes(Node** head_ref, int K)
{
Node* temp = *head_ref;
int product = 1;
while (temp != NULL) {
if (temp->data < K)
product *= temp->data;
temp = temp->next;
}
return product;
}
// Driver code
int main()
{
// Create list: 12->15->9->11->5->6
Node* head = getNode(12);
head->next = getNode(15);
head->next->next = getNode(9);
head->next->next->next = getNode(11);
head->next->next->next->next = getNode(5);
head->next->next->next->next->next = getNode(6);
int K = 9;
cout << "Sum = " << sumLesserNodes(&head, K) << endl;
cout << "Product = " << productLesserNodes(&head, K) << endl;
return 0;
}
Java
// Java program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
class GFG
{
// structure of a node
static class Node
{
int data;
Node next;
};
// function to get a new node
static Node getNode(int data)
{
Node newNode = new Node();
newNode.data = data;
newNode.next = null;
return newNode;
}
// function to sum all the nodes from the list
// that are lesser than the specified value K
static int sumLesserNodes(Node head_ref, int K)
{
Node temp = head_ref;
int sum = 0;
while (temp != null)
{
if (temp.data < K)
sum += temp.data;
temp = temp.next;
}
return sum;
}
// function to product all the nodes from the list
// that are lesser than the specified value K
static int productLesserNodes(Node head_ref, int K)
{
Node temp = head_ref;
int product = 1;
while (temp != null)
{
if (temp.data < K)
product *= temp.data;
temp = temp.next;
}
return product;
}
// Driver code
public static void main(String[] args)
{
// Create list: 12->15->9->11->5->6
Node head = getNode(12);
head.next = getNode(15);
head.next.next = getNode(9);
head.next.next.next = getNode(11);
head.next.next.next.next = getNode(5);
head.next.next.next.next.next = getNode(6);
int K = 9;
System.out.println("Sum = " + sumLesserNodes(head, K));
System.out.println("Product = " + productLesserNodes(head, K));
}
}
// This code has been contributed by 29AjayKumar
Python3
# Python3 program to sum and product all the
# nodes from the list that are lesser
# than the specified value K
# Node of the single linked list
class Node:
def __init__(self, data):
self.data = data
self.next = None
# function to get a new node
def getNode(data):
newNode = Node(0)
newNode.data = data
newNode.next = None
return newNode
# function to sum all the nodes from the list
# that are lesser than the specified value K
def sumLesserNodes(head_ref, K):
temp = head_ref
sum = 0
while (temp != None) :
if (temp.data < K):
sum += temp.data
temp = temp.next
return sum
# function to product all the nodes from the list
# that are lesser than the specified value K
def productLesserNodes(head_ref,K):
temp = head_ref
product = 1
while (temp != None) :
if (temp.data < K):
product *= temp.data
temp = temp.next
return product
# Driver Code
if __name__ == "__main__":
# Create list: 12.15.9.11.5.6
head = getNode(12)
head.next = getNode(15)
head.next.next = getNode(9)
head.next.next.next = getNode(11)
head.next.next.next.next = getNode(5)
head.next.next.next.next.next = getNode(6)
K = 9
print("Sum =", sumLesserNodes(head, K))
print("Product =", productLesserNodes(head, K))
# This code is contributed by Arnab Kundu
C#
// C# program to sum and product all the
// nodes from the list that are lesser
// than the specified value K
using System;
class GFG
{
// structure of a node
public class Node
{
public int data;
public Node next;
};
// function to get a new node
static Node getNode(int data)
{
Node newNode = new Node();
newNode.data = data;
newNode.next = null;
return newNode;
}
// function to sum all the nodes from the list
// that are lesser than the specified value K
static int sumLesserNodes(Node head_ref, int K)
{
Node temp = head_ref;
int sum = 0;
while (temp != null)
{
if (temp.data < K)
sum += temp.data;
temp = temp.next;
}
return sum;
}
// function to product all the nodes from the list
// that are lesser than the specified value K
static int productLesserNodes(Node head_ref, int K)
{
Node temp = head_ref;
int product = 1;
while (temp != null)
{
if (temp.data < K)
product *= temp.data;
temp = temp.next;
}
return product;
}
// Driver code
public static void Main(String[] args)
{
// Create list: 12->15->9->11->5->6
Node head = getNode(12);
head.next = getNode(15);
head.next.next = getNode(9);
head.next.next.next = getNode(11);
head.next.next.next.next = getNode(5);
head.next.next.next.next.next = getNode(6);
int K = 9;
Console.WriteLine("Sum = " + sumLesserNodes(head, K));
Console.WriteLine("Product = " + productLesserNodes(head, K));
}
}
// This code contributed by Rajput-Ji
Javascript
输出:
Sum = 11
Product = 30
时间复杂度: O(N)