LeetCode 461.汉明距离
简单
-
题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:0 ≤ x, y < 231. -
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
- 方法:位运算(位运算这块真的很糊涂,要多练习)。
- cpp代码实现:
class Solution
{
int hammingDistance(int x, int y)
{
int z = x ^ y;
int count = 0;
while(z)
{
count += z & 1;
z = z >> 1;
}
return count;
}
};
LeetCode 236.二叉树的最近公共祖先
中等
-
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
-
示例:
输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
输出: 3
解释: 节点 5 和节点 1 的最近公共祖先是节点 3。
- 方法:递归(真的见到二叉树就是递归,没别的了)。
- cpp代码实现:
class Solution
{
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q)
{
if(root == NULL || root == p || root == q)
return root;
TreeNode* leftNode = lowestCommonAncestor(root->left, p, q);
TreeNode* rightNode = lowestCommonAncestor(root->right, p, q);
if(leftNode && rightNode)
return root;
else
return leftNode ? leftNode : rightNode;
}
};
LeetCode 32.最长有效括号
困难
-
题目:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。
-
示例:
输入: “(()”
输出: 2
解释: 最长有效括号子串为 “()”
- 方法:括号匹配,借助栈来实现(我真的不会,看了大佬的解题思路才恍然大悟)。
- cpp代码实现:
class Solution
{
public:
int longestValidParentheses(string s)
{
if(s.size() <= 1)
return 0;
int maxLen = 0;
stack<int>st;//栈中存放的是下标,而不是字符
st.push(-1);//对栈进行初始化
for(int i = 0; i < s.size(); i++)
{
if(s[i] == '(')
st.push(i);
else
{
st.pop();
if(st.empty())
st.push(i);
else
{
int count = st.top();
maxLen = max(maxLen, i - count);
}
}
}
return maxLen;
}
};
-
时间复杂度:O(n)
-
空间复杂度:O(n)
★好像之前的都忘记写public了, 我太不严谨了,以后一定不忘记。另外不写public,默认该函数为私有的,那写出来还有啥用,不能对外使用的话,哈哈哈·······
【写在最后】
好像从很久开始就一直在等待开学,却等不来学校任何的消息。大家总是说人千万不要做让自己后悔的事情,可是我怎么常常做出让自己后悔的决定呢,我真的是一个不够坚定、敏感脆弱又玻璃心的女孩子呀,可是即使这样,我也要努力的生活,更加更加的热爱生活。祝我们都拥有一个美好的明天和明天。