[LeetCode]Add Binary&Climbing Stairs&Remove Duplicates from Sorted List

原创 2015年11月18日 13:33:55

今天写得蛮快的,来个三连发。

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,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode题解-82. Remove Duplicates from Sorted List II && 445. Add Two Numbers II

82, 题目:Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distin...

[LeetCode]82.Remove Duplicates from Sorted List II

【题目】 Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distin...

LeetCode Remove Duplicates from Sorted List II

题目

【leetcode c++】82 Remove Duplicates from Sorted List II

Remove Duplicates from Sorted List II Given a sorted linked list, delete allnodes that have duplica...
  • hqq39
  • hqq39
  • 2015-07-17 23:16
  • 259

leetcode82. Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb...

【LeetCode】Remove Duplicates from Sorted List 解题报告

Remove Duplicates from Sorted List[LeetCode]https://leetcode.com/problems/remove-duplicates-from-sor...

LeetCode 82之Remove Duplicates from Sorted List II的Java题解

题目: Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only dist...

LeetCode | Remove Duplicates from Sorted List II

这道题一开始以为是双指针问题… Given a sorted linked list, delete all nodes that have duplicate numbers, leavi...

leetcode:单链表之Remove Duplicates from Sorted List II

leetcode:单链表之Remove Duplicates from Sorted List II 题目: Given a sorted linked list, delete all node...

LeetCode.83. Remove Duplicates from Sorted List(删除单链表中的重复元素)

Given a sorted linked list, delete all duplicates such that each element appear only once. For exam...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)