求Excel中AB表示的列的实际列数,其实就是二十六进制。
class Solution {
public:
int titleToNumber(string s) {
int sum = 0;
int size = s.length();
for (int i = 0;i < size;i++)
{
sum += (s[i] - 'A' + 1) * (int)pow(26.0, (size - i - 1));
}
……
镜像二叉树,其实就是对二叉树的后序遍历+交换左右子节点。
class Solution {
public:
void swap(TreeNode <em>& left, TreeNode *& right)
{
TreeNode * tmp = left;
left = right;
right = tmp;
}
TreeNode</em> invertTree(TreeNode* root) {
……
求二叉树中两个节点的最邻近公共祖先。以前做过类似的题目,但是确实好久没A题了,自己想了下。深度优先搜索,然后分别求出两条路径再求交,开始担心会超时,结果AC挺快的。
class Solution {
public:
bool isFind;
vector<TreeNode <em>> pV, qV;
void FindK(TreeNode</em> node……
请输入整数的二进制中1的个数,简单的模拟。
class Solution {
public:
int hammingWeight(uint32_t n) {
int count = 0;
while(n > 0)
{
count += n%2;
n /= 2;
}
return count;
}
};</p>
<p>
删除单链表中,指定的节点。
最开始读题的时候,觉得至少应该给头节点和目标节点,但是猜测之后发现,题目可能是要求,将目标节点后的节点的val覆盖前面的节点的val,而不是单链表中真正意义的删除。
class Solution {
public:
void deleteNode(ListNode* node) {
ListNode * next = node->next;
……
O(1)的方法没有想出来,模拟的方法如下:
每次计算所有位数之和,知道该和小于10。
class Solution {
public:
int addDigits(int num) {
int sum = 0;
while(num > 0)
{
sum += num % 10;
num /= 10;
}
if (sum >= 10)
{
……
</p>
<h1>include</h1>
<p>using namespace std;
int main()
{
int n; // 菱形最长行的<em>的个数为n,且n一定为奇数因为 n = 2</em>k + 1
cin &gt;&gt; n;</p>
<pre><code>int cn = 1;
bool isUp = true;
for (int i = 1;i {
……
</p>
<h1>include <iostream></h1>
<p>using namespace std;</p>
<p>int main()
{
char filename[255];
cin >> filename;</p>
<pre><code>FILE * pFile = fopen(filename, &quot;r&quot;);
fseek(pFile,……
int Fibonacci(int n)
{
if (1 == n)
{
return 1;
}
if (2 == n)
{
return 2;
}
return Fibonacci(n-1) + Fibonacci(n-2);
}
int FibonacciIteration (int n)
{</p>
<p>int a = 1;
int b = 2;
if (n == 1)
return a;
if (n == 2)
return b;
……
题意很简单,给定一个n, 求一个最小的m,使得nm中的10进制表示只有0,1
方法1:Brute Force [大整数的情况需要考虑,何时终止,时间复杂度如何?]
bool CheckNumber(int number)
{
while(number)
{
if (number%10 != 0 && number%10 != 1)
return false;
number /= 10;
……