[2015/7/16] #237, #238

#237 Delete Node in a Linked List

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.

The best code so far:

这个题太简单,好像没有啥好优化的?

所以这里判断是否是最后一个节点,是应该 node == NULL 还是还是 node->next == NULL 呢?



Code by S:

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     void deleteNode(ListNode* node) {
12         if (node->next == NULL)
13             return;
14         node->val = node->next->val;
15         node->next = node->next->next;
16
17     }
18 };

开始用.代替了->报错了几次,其实应该可以的。

【讨论】:是否需要删掉那个不要的节点呢?(new一个node,再delete掉?)




#238  Product of Array Except Self

Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

Solve it without division and in O(n).

For example, given [1,2,3,4], return [24,12,8,6].

The best code so far:

 1 class Solution {
 2 public:
 3     vector<int> productExceptSelf(vector<int>& nums)
 4     {
 5         int len = nums.size();
 6         vector<int> result(len , 0);
 7         result[0] = 1;
 8         for(int i = 1 ; i < len ; i++)
 9         {
10             result[i] = result[i-1] * nums[i-1];    //result存储的是0~i-1总共i个数字的乘积
11         }
12         int postPro = 1;
13         for(int j = len-1 ; j >= 0 ; j--)
14         {
15             result[j] *= postPro;
16             postPro *= nums[j]; //postPro表示从j到len-1个数字的乘积
17         }
18         return result;
19     }
20 };

http://blog.csdn.net/u012243115/article/details/46906417

少了一个数组和一遍扫描。



Code by S:

 1 class Solution {
 2 public:
 3     vector<int> productExceptSelf(vector<int>& nums) {
 4         int l = nums.size();
 5         vector<int> left;
 6         vector<int> right;
 7         vector<int> output;
 8         int flag = 1;
 9         for(int i = 0; i < l-1; i++){
10             flag *= nums[i];
11             left.push_back(flag);
12         }
13         flag = 1;
14         for(int j = l-1; j > 0; j--){
15             flag *= nums[j];
16             right.push_back(flag);
17         }
18         output.push_back(right[l-2]);
19         for(int i = 1 ; i < l-1; i++){
20             output.push_back(left[i-1]*right[l-2-i]);
21         }
22         output.push_back(left[l-2]);
23         return output;
24
25     }
26 };

开了三个数组,而且大小还比实际的小一位,感觉有点不舒服,写到第三个循环才意识到这个问题。

想到算法就不难了,但是并没想到。自己想的时候还想到矩阵神马的。

时间: 2024-10-13 21:46:22

[2015/7/16] #237, #238的相关文章

张珺 2015/07/16 个人文档

姓名 张珺 日期 中蓝公寓蓝芳园D507,2015/07/16 主要工作及心得 今天我们开始进行文档的编写工作,对全部的文档进行了分工,我负责了概要设计说明书的编写.详细设计说明书中客户端里操作员相关内容的编写和对于操作员中相关操作的人工测试工作. 遇到的问题 报告中各项的编写要求.报告格式 解决方法 明天去找老师讨论有关报告的问题

陈嘉 2015/07/16 个人文档

姓名 陈嘉 日期 2015/7/16 主要工作及心得 1.完成报告的JUnit测试部分 2.编写测试计划文档.测试计划文档需要详尽的考虑所有正确与错误的情况. 遇到的问题 报告的有一些部分不知道具体的格式应该是什么样子以及需要包含哪些部分 解决方法 明天去找老师讨论有关报告的问题

【谜客帝国】第17届阳光原创联想题会(2015.3.16)

[谜客帝国]第17届阳光原创联想题会(2015.3.16)主持:瓷   计分:晴画1.此题   开始   歌曲   甲子  1   一2.双杠   愚蠢   其中   丑牛  1   二3.网开一面  玲珑曲线   一再包抄  真心团圆   3  三围4.太祖革弊强国运  政务公开除陈规日中差距从此始  发展才是硬道理   4  明治维新5.经典童话  埃及少女  刚刚上映  郑钧歌曲   3 灰姑娘6.新年快乐  狼不出没  未必高兴  南朝人名   2  羊欣7.新年雨连绵  猴头探龙宫 未

任笑萱 2015/7/16 个人文档

姓名 任笑萱 日期 2015年7月16日 主要工作及心得 今天我主要是进行了数据库部分的编写,没有遇到什么大的问题,主要是格式.内容不太确定,这些还都需要和老师探讨一下. 之后编写了界面设计那部分的内容,这部分主要是阐述一下我的设计思想,很容易阐述的. 还有就是详细设计里面发邮件部分的编写,这部分的内容有很大一部分是从网上学习而来,经过了自己的修改,所以也比较好阐述. 遇到的问题 1)         报告的有一些部分不知道具体的格式应该是什么样子以及需要包含哪些部分 解决方法 1)      

赵晓铮 2015/7/16 个人文档

姓名 赵晓铮 日期 2015年7月16日 主要工作及心得 今天,我们主要开始编写报告,我主要负责项目开发计划.需求规格说明书.详细设计和测试分析的经理部分,今天主要写了项目开发计划和规格说明书. 遇到的问题 报告不知道都应该写些什么.以什么格式写. 解决方法       我们准备在找老师查的时候问清楚,再在此基础上进行相应的修改.

2015 5.16 C# 继承和多态

类的层次结构有两种基本的构造方式  自顶向下  自底向上 基类的保护成员是指允许派生类的方法代码访问,而不是指通过派生类的对象访问 如果基类中的字段通过公有且可读写的属性进行了封装,那么建议将字段定义为私有的,这样包括其派生类在内的所有其他类型都必须通过属性进行访问 隐藏基类成员 如果派生类中定义了与基类相同的成员,默认情况下基类的成员在派生类中会被隐藏,即派生类成员覆盖了基类成员   用new来修饰提高代码可读性 base 关键字,当派生类隐藏了基类成员时,base关键字就能发挥作用:直接写出

2015.12.16 doubleLinkedList-Function

1 #include <stdio.h> 2 #include <stdbool.h> 3 #include <stdlib.h> 4 5 typedef struct node{ 6 struct node *previous; 7 int age; 8 struct node *next; 9 }Node; 10 11 //创建一个结点 12 Node *createNode(); 13 //初始化链表 14 void intial(Node *const pHea

2015.01.16 续

1.注释 :#if 0 #endif 2. 3.bool 类型 4.char类型 5. short   2个字节 short(signed short)  -32768~32767 unsigned short  0~65535 6. int  4个字节 7. long 4个字节 8. 浮点类型: float  4个字节 double 8个字节 9. 10. 11. 12. 预处理之后: 13.练习 int n; scanf("%d",&n); 注:scanf 中不能加&quo

2015.06.16,学习,学习笔记-《通过翻译学英语》学习笔记(1)

Ex1:按人口计算,中国是世界上最大的国家:按领土面积计算,是第三大国家,仅次于俄罗斯和加拿大. 个人翻译:Accounting on / According to the popularity, China is the largest country in the world; and on the area, it's the third largest country, only less than Russia and Canada. 讨论: “按..计算”,用according to