挑战编程题(三)

接 挑战编程题(二)http://www.cnblogs.com/qiange/p/5090588.html

题目:

  1. 有两个非负数的链表,每个链表都反序的存储一个多位数字的每一位,(例如:链表2->4->3  数字342),现在求两个链表数字的相加,求和的链表。

例如: Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)

Output: 7 -> 0 -> 8

/**

* Definition for singly-linked list.

* struct ListNode {

*     int val;

*     ListNode *next;

*     ListNode(int x) : val(x), next(NULL) {}

* };

*/

//函数

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {

}

解答:这道题不难主要是考察“单链表“的相关操作。

解题思想,就是单链表每个位置相加,如果每位和大约等于10,向前一位进一,依次类推;

如下:

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {

ListNode *result=NULL;

ListNode *l=result;

int carry =0;   //进位值

while (l1 && l2){

int val=0;

int tempVal= l1->val + l2->val + carry;

if (tempVal>=10){

val=tempVal-10;

carry=1;

}

else{

val=tempVal;

carry=0;

}

ListNode *l3=(ListNode *)malloc(

sizeof(ListNode));

l3->val=val;

l3->next = NULL;

if(!l){

l=l3;

result=l;

} else{

l->next=l3;

l=l->next;

}

l1=l1->next;

l2=l2->next;

}

//对l1链表剩余项处理

while(l1){

int val=0;

int tempVal= l1->val + carry;

if (tempVal>=10){

val=tempVal-10;

carry=1;

}

else{

val=tempVal;

carry=0;

}

ListNode *l3=(ListNode *)malloc(

sizeof(ListNode));

l3->val=val;

l3->next = NULL;

if(!l){

l=l3;

} else{

l->next=l3;

l=l->next;

}

l1=l1->next;

}

//对l2链表剩余项处理

while(l2){

int val=0;

int tempVal= l2->val + carry;

if (tempVal>=10){

val=tempVal-10;

carry=1;

}

else{

val=tempVal;

carry=0;

}

ListNode *l3=(ListNode *)malloc(

sizeof(ListNode));

l3->val=val;

l3->next = NULL;

if(!l){

l=l3;

} else{

l->next=l3;

l=l->next;

}

l2=l2->next;

}

//对还存在的进位处理

if (carry)

{

ListNode *l3=(ListNode *)malloc(

sizeof(ListNode));

l3->val=carry;

l3->next = NULL;

l->next=l3;

l=l->next;

}

return result;

}

运行结果如下图所示:(完整源码下载地址:http://download.csdn.net/detail/cq20151207/9389996

很久没有用C++的单链表了,平时用php数组实现的很多东西,这次通过这道题,让我有重新回顾了一下单链表的使用;

关于单链表的使用,我整理了一下,大家可以参考下:http://www.cnblogs.com/qiange/p/5100441.html

今天的题目

 

3.给定一个字符串,获得最长且不重复的字符的子串的长度。例如,“abcabcbb” 的最长子串而不必重复字母是“abc”,它的长度是3为“bbbbb”最长子串而不必重复字母是 “b”,它的长度是1。

int lengthOfLongestSubstring(string s) {

}

如有问题,欢迎和我联系。 我的邮箱 [email protected] 

时间: 2024-10-24 12:24:56

挑战编程题(三)的相关文章

挑战编程题(一)

编程最需要的就是理论结合实践,现在我们就来一起从最简单的LeetCode开始,我从今天开始,每天都会解析前一天的题目(今天是第一天),然后发布明天要解析的题目,大家可以和我一起做题目,将你对题目做法(语言不限),发给我也(邮箱[email protected]),也可以直接在下面评论,大家一起研究.在第二天我会发布我写答案和解释,也会挑选我收到的好的解析公布在这里. 1. 求两个数的和 给定一个整型数组,从中挑选两个数字,使其相加为一个为一个给定的值,返回这两个值所有数组中位置下标,位置下标小的

挑战编程题(二)

昨天的题目:http://www.cnblogs.com/qiange/p/5062213.html 1. 求两个数的和 给定一个整型数组,从中挑选两个数字,使其相加为一个为一个给定的值,返回这两个值所有数组中位置下标,位置下标小的在前面,位置下标从1开始.   例如: 输入:nums= {2,7,11,13}  target=24 输出:3,4 //解法1:最简单的方法,用两层循环,算法如下,算法复杂度为O(n*n) //这个也是最容易想到的. vector<int> twoSum1(vec

(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html “AOAPC I”是刘汝佳(大

编程题:用二维字符串数组实现。从键盘输入三个学生姓名,并输出。

#include<stdio.h> #include<string.h> void main() { char name[3][30]; int i; for(i=0;i<3;i++) gets(name[i]);  /*name[i]是一个一维字符数组*/ for(i=0;i<3;i++) printf("%s\n",name[i]); } 编程题:用二维字符串数组实现.从键盘输入三个学生姓名,并输出.,布布扣,bubuko.com

三个 编程题 :1. 回文 2. 将字符串t连接到字符串s的尾部

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

C语言的那些题(三) —— 编程计算身高问题

今天,再和大家分享一道关于编程计算身高的问题. 每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传.饮食习惯与坚持体育锻炼等.小孩成人后身高与其父母身高和自身性别密切相关.设faHeight为其父身高,moHeight为其母身高,身高预测公式为:男性成人时身高 = (faHeight + moHeight) * 0.54(cm),女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm),此外,如果喜爱

算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发.   一.UVaOJ http://uva.onlinejudge.org  西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ.   二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html   "AO

2016携程测试实习生笔试编程题

四道大题: 第一道题,是携程网站有一个725*286(具体不记得了)广告区域,能想到的测试类型及方法. 写测试用例——2016年1月1日到2016年3月1日同一订单往返机票立减50 全部功能点. 第二道题,sql语句.(该学sql- -) 第三道题,编程题: 有N个球,M个颜色(M小于等于N),求要想从这N个球里拿出全部(M)个颜色的球,至少需要拿多少个. 思路: 我又是用map实现的,当map的size==M的时候,就说明颜色已经集齐了,计算一个minNum,然后继续扫描,更新minNum 感

搜狐2016研发工程师编程题

1.[编程题]马戏团 搜狐员工小王最近利用假期在外地旅游,在某个小镇碰到一个马戏团表演,精彩的表演结束后发现团长正和大伙在帐篷前激烈讨论,小王打听了下了解到, 马戏团正打算出一个新节目“最高罗汉塔”,即马戏团员叠罗汉表演.考虑到安全因素,要求叠罗汉过程中,站在某个人肩上的人应该既比自己矮又比自己瘦,或相等. 团长想要本次节目中的罗汉塔叠的最高,由于人数众多,正在头疼如何安排人员的问题.小王觉得这个问题很简单,于是统计了参与最高罗汉塔表演的所有团员的身高体重,并且很快找到叠最高罗汉塔的人员序列.