4. Median of Two Sorted Arrays
- Total Accepted: 134698
- Total Submissions: 650780
- Difficulty: Hard
- Contributors: Admin
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
--------------------------------难度是Hard,好像也没什么难的,囧,错觉,第三题花了很久,这个就一小会儿------------------------------------
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int>nums(nums1.size()+nums2.size());//初始化vector的方法,vector<int>nums(大小);
int first=0,second=0;
for(int i=0;i<nums1.size()+nums2.size();i++){
if(first==nums1.size()){nums[i]=nums2[i-nums1.size()];second++;}
else if(second==nums2.size()){nums[i]=nums1[i-nums2.size()];first++;}
else if(nums1[first]>nums2[second]){nums[i]=nums2[second];second++;}
else {nums[i]=nums1[first];first++;}
}
float answer=(nums[(first+second)/2]+nums[(first+second-1)/2])/2.0;
return answer;
}
};
运行结果如图:
5. Longest Palindromic Substring //找出最长回文
- Total Accepted: 158086
- Total Submissions: 648869
- Difficulty: Medium
- Contributors: Admin
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of sis 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
class Solution {
//回文,上海自来水来自海上这种……一开始没看清题目
public:
string longestPalindrome(string s) {
int max=0,begin=0;
/*
unordered_map<char,int> mapping;
for(int i=0;i<s.size();i++){
if(mapping.find(s[i])==mapping.end()){
//没找到,最长自串里可以包括一样的英
mapping[s[i]]=i;
}
else{
if(i-mapping[s[i]]>max-1){
max=i-mapping[s[i]]+1;
begin=mapping[s[i]];
//文看着好别扭,如果不可以就加下面这一行
// mapping[s[i]]=i;
}
}
}
*/
for(int i=0;i<s.size()-1;i++){
int length_begin=0;
//去除大段一样的
//不小心把==写成了=找了半天bug...
if(i<s.size()-1){while(s[i]==s[i+1]){i++;length_begin++;if(length_begin+1>max){max=length_begin+1;begin=i-max+1;}}}
for(int j=s.size()-1;j>i;j--){
int length_end=0;
if(j>i+1){while(s[j]==s[j-1]){j--;length_end++;}}
int extra=length_begin<length_end?length_begin:length_end;
if(s[j]==s[i]){
if(j-i+extra>max-1){
bool goon=true;
for(int start=0;start<j-i;start++){
if(s[start+i]!=s[j-start])goon=false;
}
if(goon){
max=j-i+1+2*extra;
begin=i-extra;
}
}
}
}
}
string answer="";
// for(int i=0;i<max;i++)answer[i]=s[begin+i];
// if(max>999)max=1000;
answer=s.substr(begin,max);
if(max<2)answer=s.substr(0,1);
return answer;
}
};
运行结果如图:
祝刷LeetCode愉快~