[leetcode_92]Reverse Linked List II

输入一个单向链表,要求将链表从m到n 逆序。不要开辟额外的空间。 开始题意读错了,以为将m和n两个节点交换位置。结果WA 但是后来一向,这个可以算是逆序的一个步骤,所以代码稍微改了改就AC了,其中额外注意m=1 n-m=1的情况。 class Solution { public: ListNode *reverseBetween(ListNode *head, int m, int n) { ……

[leetcode_67]Add Binary

90个题了,真心不容易。 两个字符串的二进制加法。找一个int来存储进位。 class Solution { public: string addBinary(string a, string b) { string ans = ""; int lenMin = a.length() < b.length()?a.length():b.length(); int inbit = 0; for(int i = 0;i < le……

[leetcode_31]Next Permutation

给定一个数组,求该数的序列的下一个序列。如果该序列已经是最后一个最大的序列了,输出最小的排序。 首先思路一定要清晰。 要找第一个值得交换的数——该数尽可能的靠近个位,且该数的前面存在一个数比该数大。然后找到前面那个比该数大的最小的数交换即可。 最后~该数前面的所有数升序排序。 int cmp(int a,int b) { ……

[leetcode_50]Pow(x, n)

模拟pow,注意超时和n为负数的情况。 可以二分下去这样复杂度为log(n) class Solution { public: double powstep(double x,int n) { if(n == 0)return 1.0; if(n == 1)return x; if(n == 2)return x<em>x; if(n % 2 == 0) { return powstep(powstep(x,n/2),2); ……

[leetcode_86]Partition List

单链表划分。选择一个val x然后单链表中比x值小的节点在前,大的在后,但是小与小,大与大之间保持原位置。 想法: 先找到第一个比x小的值,放到最前面。 再找到第一个比x大的值。 接下来就是从x大的值的节点后面开始枚举,大的继续,出现小的,交换到第一个比x大的值前面。 class Solution { public: ListNode <……