[LeetCode]Add Binary&Climbing Stairs&Remove Duplicates from Sorted List
来源:互联网 发布:如何把域名卖出去 编辑:程序博客网 时间:2024/05/20 08:41
今天写得蛮快的,来个三连发。
Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a ="11"
b ="1"
Return"100"
.
- 题意:二进制加法.
- 解法:把两个串都倒过来(低位先加).然后模拟一下就好了.注意最后也要进位就好.
class Solution { static int getIntByIndxInString(const std::string& rkStr, int iIndx) { return iIndx < (int)rkStr.size() ? rkStr[iIndx] - '0' : 0; }public: string addBinary(string a, string b) { reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); string kResult; int iAddValue = 0; for (int i = 0; i < (int)a.size() || i < (int)b.size(); ++i) { int iAddSum = getIntByIndxInString(a, i) + getIntByIndxInString(b, i) + iAddValue;//这里是整数相加结果只有0 1 2 kResult.push_back((iAddSum & 1) + '0');//iAddSum&1结果为0和1,再加上'0'就是字符串的0和1了。 iAddValue = iAddSum > 1;//如果和为2说明有进位. } if (iAddValue) kResult.push_back('1'); reverse(kResult.begin(), kResult.end()); return kResult; }};
Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
- 题意:走梯子,一个普通的递推.
- 对于第i个梯子有前一步和前两步都能到达它,所以方案为前两个的和,方程式为dp[i]=dp[i-1]+dp[i-2](i>1).
//用a,b表示c的前两步class Solution {public: int climbStairs(int n) { int a = 0, b = 1, c = 1; for (; n--;) { c = a + b; a = b; b = c; } return c; }};
Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given1->1->2
, return1->2
.
Given1->1->2->3->3
, return1->2->3
.
- 题意:有序链表的去重
- 解法:跟这里差不多,不过本题不能直接访问上一个节点,所以得把上一个节点也存下来在循环的时候.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if (!head) return nullptr; ListNode* pkResult = head; ListNode* pkMove = pkResult; ListNode* pkLastNode = head; for (head = head->next; head; head = head->next, pkLastNode = pkLastNode->next) { if (head->val != pkLastNode->val) { pkMove->next = head; pkMove = pkMove->next; } } pkMove->next = nullptr; return pkResult; }};
欢迎访问我的github,我的leetcode持续更新: https://github.com/tsfissure/LeetCode
0 0
- [LeetCode]Add Binary&Climbing Stairs&Remove Duplicates from Sorted List
- 【LeetCode】Remove Duplicates from Sorted List &&Climbing Stairs
- LeetCode 83. Remove Duplicates from Sorted List Add to List
- Remove Duplicates from Sorted List :from LeetCode
- Leetcode - List - Remove Duplicates from Sorted List
- [leetcode][list] Remove Duplicates from Sorted List
- [leetcode][list] Remove Duplicates from Sorted List
- LeetCode: Remove Duplicates from Sorted List
- LeetCode: Remove Duplicates from Sorted List II
- [Leetcode] Remove Duplicates from Sorted List
- [Leetcode] Remove Duplicates from Sorted List II
- LeetCode: Remove Duplicates from Sorted List
- LeetCode: Remove Duplicates from Sorted List II
- [Leetcode] Remove Duplicates from Sorted List II
- leetcode 37: Remove Duplicates from Sorted List
- [leetcode] Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List
- HI3518EV100 HZ=100
- Choregographer工作原理分析
- 线程
- android之Service介绍之三 AIDL与传递对象
- 不忘初心,方得始终
- [LeetCode]Add Binary&Climbing Stairs&Remove Duplicates from Sorted List
- 十进制小数转化为二进制小数
- hdoj1698Just a Hook【线段树区间修改+区间求和】
- C语言中产生随机数
- 第十周练习 1003 素数判定
- ArcGIS教程:了解路径距离分析(一)
- JAVA--HashCode 基础(判断对象是否相等)
- linux中环境变量的设置
- z10刷机