全部评论
第一题 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str1 string字符串 输入字符串str1 * @return int整型 */ int canBePalindromicString(string str1) { // write code here int l = 0; int r = str1.size() - 1; while (l < r && str1[l] == str1[r]) { l++; r--; } if (l + 2 >= r) return 1; int l1 = l+2; int r1 = r; while (l1 < r1 && str1[l1] == str1[r1]) { l1++; r1--; } if (l1 < r1) { int l2 = l; int r2 = r - 2; while (l2 < r2 && str1[l2] == str1[r2]) { l2++; r2--; } if (l2 < r2) return 0; } return 1; } };
第四题: class Solution { public: int find_kth(vector<int>& arr1, vector<int>& arr2, int st1,int ed1,int st2,int ed2,int k) { int m = ed1 - st1+1; int n = ed2 - st2+1; if (m <= 0) return arr1[st2 + k - 1]; if (n <= 0) return arr1[st1 + k - 1]; if(k==m+n) return max(arr1[m], arr2[n]); if (k == 1) return min(arr2[st1],arr2[st2]); int mid1 = min(st1 += k / 2 - 1,ed1); int mid2 = min(st2 += k / 2 - 1,ed2); if (arr1[mid1] < arr2[mid2]) { return find_kth(arr1,arr2,mid1+1,ed1,st2,ed2,k-(mid1+1-st1)); } else return find_kth(arr1, arr2, st1, ed1, mid2+1, ed2, k - (mid2 + 1 - st2)); } int find_kth(vector<int>& arr1, vector<int>& arr2, int k) { // write code here int m = arr1.size(); int n = arr2.size(); if (k == m + n) return max(arr1[m],arr2[n]); return find_kth(arr1, arr2, 0, min(m-1, k), 0, min(n-1, k), k); } };
飞机状压dp 100%ac
现在这时候了,网易还有hc吗?别真是千军万马争一个hc吧
第二题什么思路,有大佬贴个代码吗
第二题 int n, k; vector<int> vec; int main() { char pre,temp; string s; cin >> s >> k; n = s.size(); pre = 'n&(392)#39;; int count=0; int flag = true; for (int i = 0; i < n; i++) { temp=s[i]; if (pre == 'n&(392)#39;) { pre = temp; count = 1; if (temp == '0') flag = false; continue; } if (temp != pre) { vec.push_back(count); //cout << count << endl; count = 0; } count++; pre = temp; } vec.push_back(count); //cout << count << endl; int i = 0; if (!flag) i = 1; int ans = 0; for ( ; i < vec.size(); i++) { int rest_k = k; int res = 0; for (int j = i; j < vec.size(); j++) { res += vec[j]; j++; if (j >= vec.size()) break; if (rest_k >= vec[j]) { res += vec[j]; rest_k -= vec[j]; } else { res += rest_k; rest_k = 0; break; } } if(rest_k > 0) { if (i >= 1) { res += min(vec[i - 1], rest_k); } ans = max(ans, res); break; } ans = max(ans, res); } cout << ans; }
请问有接到面试的嘛
相关推荐
02-12 14:04
北京交通大学 大数据开发工程师 ![](https://static.nowcoder.com/head/2photo.jpg)
点赞 评论 收藏
分享