219. 存在重复元素 II
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
if(nums.size()==0)
return false;
unordered_map<int,int>map;
for(int i=0;i<nums.size();i++)
{
if(map.find(nums[i])!=map.end())// 找到了在索引i之前就出现过nums[i]这个元素,用find函数是来查找位置,如果没有找到得话就返回map.end
{
int a=i-map[nums[i]]; //map[nums[i]]用来表示元素所再得下标。
if(a<=k)
return true;
}
if(map.find(nums[i])==map.end())
map[nums[i]] = i; // 如果map里面没有,就把插入一条数据<元素,元素所在的下表>
}
return false;
}
};
这道题用的是哈希表,将数组元素和数组元素得下标放入到哈希表当中,然后运用 unordered_map得.find函数来查找,找到了在索引i之前就出现过nums[i]这个元素,用find函数是来查找位置,如果没有找到得话就返回map.end。如果没有查找到得话就将该数组元素和数组下标放入到map当中,一直到找到然后与i-nums【i】与k相比较如果小于直接return,如果不是等跳出循环直接false;
226. 翻转二叉树
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root==NULL)
return root;
TreeNode *p=root->left;
root->left=invertTree(root->right);
root->right=invertTree(p);
return root;
}
};
这道题就是一个简单得运用递归得过程不过特别注意得是要用用treenode *q=root->left;不然在你再第二局得时候生成得还是原来得树。
231. 2的幂
class Solution {
public:
bool isPowerOfTwo(int n) {
int i,j;
if(n<=0)
return false;
while(n>2)
{
j=n%2;
n=n/2;
if(j==1)
return false;
}
return true;
}
};
234. 回文链表
class Solution {
public:
bool isPalindrome(ListNode* head