445. Add Two Numbers II
class Solution {
private:
ListNode* reverse(ListNode *a) {
ListNode *last = nullptr;
for (; a; ) {
ListNode *nxt = a->next;
a->next = last;
last = a;
a = nxt;
}
return last;
}
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
l1 = reverse(l1);
l2 = reverse(l2);
int carry = 0;
ListNode *ret = nullptr, **p = &ret;
while (l1 || l2 || carry) {
int l = l1? l1->val: 0, r = l2? l2->val: 0;
int val = (l + r + carry) % 10;
carry = (l + r + carry) / 10;
if (l1) l1 = l1->next;
if (l2) l2 = l2->next;
*p = new ListNode(val);
p = &((*p)->next);
}
return reverse(ret);
}
};
451. Sort Characters By Frequency
class Solution {
public:
string frequencySort(string s) {
unordered_map<int, int> mp;
for (auto c: s) mp[c]++;
sort(s.begin(), s.end(), [&mp](const char &a, const char &b) {
if (mp[a] == mp[b]) return a < b;
else return mp[a] > mp[b];
});
return s;
}
};