Leetcode笔记

  • Two Sum
    • C(初始版)
    • C++版1
    • C++版2
    • 笔记
  • Add Two Numbers
    • 初始版本
    • C

Two Sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

C(初始版)

#include <iostream>
int main(int argc, const char * argv[]) {int nums[4]={2,7,11,15};int target;scanf("%d",&target);for(int i=0;i<4;i++){for(int j=i+1;j<4;j++){if(nums[i]+nums[j]==target){printf("%d %d",i,j);return 0;}}}return 0;
}

C++版1

链接: [link]https://www.cnblogs.com/grandyang/p/4130379.html

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> m;vector<int> res;for (int i = 0; i < nums.size(); ++i) {m[nums[i]] = i;}for (int i = 0; i < nums.size(); ++i) {int t = target - nums[i];if (m.count(t) && m[t] != i) {res.push_back(i);res.push_back(m[t]);break;}}return res;}
};

C++版2

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> m;for (int i = 0; i < nums.size(); ++i) {if (m.count(target - nums[i])) {return {i, m[target - nums[i]]};}m[nums[i]] = i;}return {};}
};

笔记

vector count:返回元素值为target的元素个数。

Add Two Numbers

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Example:

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807

初始版本

将两个链表的对应项相加,再从头节点遍历新链表(若该节点val>9,则-10,且next的val+1)
代码暂未修改

 /*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode now1=l1,now2=l2;ListNode *newlist,pnode;pnode=newlist;while(now1!=NULL && now2!=NULL){pnode.val=now1.val+now2.val;now1=now1->next;now2=now2->next;pnode=pnode->next;}if(now1==NULL){pnode->next=now2;}else{pnode->next=now1;}pnode=newlist;while(pnode!=NULL){if(pnode>9){pnode.val-=10;if(pnode->next!=NULL){pnode->next.val+=1;}else if(pnode->next==NULL){pnode->next.val=1;}}}return newlist;}};

C

链接:https://www.cnblogs.com/JeroZeng/p/4668784.html

比较过程中利用carry实时进位,相较于初始版本中再次遍历链表,节省了时间。

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode head, *p;  p = &head;int carry = 0;while(1){if(l1 && l2){l1->val += (l2->val + carry);carry = l1->val / 10;l1->val = l1->val % 10;p->next = l1;p = l1;l1 = l1->next;l2 = l2->next;}else if(l1){l1->val += carry;carry = l1->val / 10;l1->val = l1->val % 10;p->next = l1;p = l1;l1 = l1->next;}else if(l2){l2->val += carry;carry = l2->val / 10;l2->val = l2->val % 10;p->next = l2;p = l2;l2 = l2->next;}else if(carry){struct ListNode *cur = (struct ListNode*)malloc(sizeof(struct ListNode));cur->val = 1;cur->next = NULL;p->next = cur;return head.next;}elsereturn head.next;}return NULL;
}

LeetCode笔记相关推荐

  1. LeetCode—笔记—51、N皇后——递归回溯,个人思路,简单易懂

    LeetCode-笔记-51.N皇后--递归回溯,个人思路,简单易懂 51. N 皇后 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 ...

  2. Leetcode 笔记 116 - Populating Next Right Pointers in Each Node

    题目链接:Populating Next Right Pointers in Each Node | LeetCode OJ Given a binary tree struct TreeLinkNo ...

  3. LeetCode笔记:Biweekly Contest 56(补发)

    LeetCode笔记:Biweekly Contest 56 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  4. LeetCode笔记:原地修改数组

    LeetCode笔记:原地修改数组 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

  5. LeetCode笔记:Weekly Contest 280

    LeetCode笔记:Weekly Contest 280 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4 ...

  6. LeetCode笔记:Biweekly Contest 38 比赛记录

    LeetCode笔记:Biweekly Contest 38 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 ...

  7. LeetCode笔记:Biweekly Contest 83

    LeetCode笔记:Biweekly Contest 83 0. 小结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. ...

  8. LeetCode笔记:Biweekly Contest 55(补发)

    LeetCode笔记:Biweekly Contest 55 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  9. LeetCode笔记:Biweekly Contest 68

    LeetCode笔记:Biweekly Contest 68 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  10. LeetCode笔记:Biweekly Contest 65

    LeetCode笔记:Biweekly Contest 65 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

最新文章

  1. Swift -布局框架SnapKit使用
  2. 蚂蚁金服对研发高要求的领域建模能力是指什么?
  3. 敏捷测试理论以及实践(2)
  4. C语言按行和列求平均成绩代码(指针,二维数组)
  5. 面试-线程池的成长之路
  6. memcache的使用入门C++代码
  7. 好奇心、求知欲、理解力一直是我生命里最强大的驱动力​
  8. Microsoft MVC3 框架
  9. 旋翼机自主着陆-主要技术难点
  10. 公安机关计算机网络安全协议,计算机信息网络国际联网单位网络安全协议合同范本...
  11. 网钛CMS采集插件-无需登陆自动采集发布插件
  12. NTL密码算法开源库(数论库)代码分析项目--综述
  13. 在阳光下关闭自动调节功能后,背光很亮,打开自动调节亮度,背光很暗[FAQ12718][AAL] 打开MTK_AAL_SUPPORT 后,自动亮度调节速度变慢
  14. python开启摄像头以及深度学习实现目标检测
  15. 如何从零开始创建React项目
  16. highCharts图表应用-模拟心电图
  17. (项目)在线教育平台(九)
  18. 从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性)
  19. Flannel网络环境搭建:
  20. Fullcalendar v5.5.1 设计一个考勤日历插件

热门文章

  1. 经验分享——家长与学校应该怎样沟通
  2. 机器学习导论(二)-模型评估与选择
  3. Springboot项目整合JSP模板引擎
  4. 游戏开发如此简单?我直接创建了一个游戏场景【python 游戏实战 02】
  5. Java JDK 动态代理(AOP)使用及实现原理分析
  6. window环境下Redies安装和服务启用
  7. 如何使用万能地图下载器解决百度地图的偏移问题
  8. 面试秘籍 | 接口测试常见面试题
  9. 三线一控电动球阀、三线两控电动球阀、两线制断电开阀、两线制断电关阀四类电动球阀的区别
  10. OpenCV3编程入门(毛星云)读书笔记(一)