全部评论
两道题全AC #include <iostream> #include <string> #include <set> using namespace std; int main1() { int n1, n2; cin >> n1 >> n2; int num = 0; if (n1 > n2) num++; while (cin >> n1) { if (n2 > n1) { num++; n2 = n1; } if (num > 1) { cout << "No" << endl; break; } else { cout << "Yes" << endl; break; } } system("pause"); return 0; } int main() { string s = "4/1-20,30-52,100"; int hashsize = 0; bool flag = false; int key1[1000]{ 0 };//存储区间值 int key[1000]{ 0 }; //存储单个值 int index1 = 0; int index2 = 0; int num = 0; int len = s.length(); for (int i = 0; i < len; i++) { if (s[i] == '/') { hashsize = num; num = 0; } else if(s[i] == '-') { key1[index1++] = num; flag = true; num = 0; } else if( s[i] == ',') { if (flag) { key1[index1++] = num; flag = false; num = 0; } else { key[index2++] = num; num = 0; } } else { num *= 10; num += (s[i] - '0'); } } if (flag) key1[index1++] = num; else key[index2++] = num; set<int> st[100]; for (int i = 0; i < index1; i += 2) { for (int j = key1[i]; j <= key1[i + 1]; j++) { int m = j % hashsize; st[m].insert(j); } } for (int i = 0; i < index2; i++) { int m = key[i] % hashsize; st[m].insert(key[i]); } cout << endl; int max = 0; int maxindex = 0; for (int i = 0; i < 100; i++) { if (st[i].size() > max) { max = st[i].size(); maxindex = i; } } cout << max << "-" << maxindex << "-"; for (set<int>::reverse_iterator it = st[maxindex].rbegin(); it != st[maxindex].rend(); it++) { if(it == --st[maxindex].rend()) cout << *it; else cout << *it << " "; } system("pause"); return 0; }
贴个c++的,AC。 #include <bits/stdc++.h> using namespace std; int main(int argc, char const *argv[]) { ios::sync_with_stdio(0);cin.tie(0); //处理输入 string in; cin >> in; for(auto& x : in) if(x == '/' || x == ',') x = ' '; stringstream ss(in); int hashsize; ss >> hashsize; map<int, set<int, greater<int>>> mmp; // 处理key while(ss >> in) { bool flag = 0; for(auto& x : in) if(x == '-') { x = ' '; flag = 1; break; } // 区间key和单独key if(flag) { stringstream sss(in); int l, r; sss >> l >> r; for(int i = l; i <= r; ++i) { int idx = i%hashsize; mmp[idx].insert(i); } } else { stringstream sss(in); int tmp; sss >> tmp; int idx = tmp%hashsize; mmp[idx].insert(tmp); } } int sum = 0, ans_id; for(auto x : mmp) if(x.second.size() > sum) { ans_id = x.first, sum = x.second.size(); } set<int, greater<int>>& anset = mmp[ans_id]; vector<int> ans; for(auto x : anset) ans.push_back(x); int cnt = ans.size(); // 个数-哈希值-元素1 > 元素2 > 元素3 cout << cnt << "-" << ans_id << "-"; int sz = ans.size(); cout << ans[0]; for(int i = 1; i < sz; ++i) cout << " " << ans[i]; cout << endl; return 0; }
第一题没给n 输入难道不用先输n的值吗
只AC了%55左右吧,不知道啥原因,这输入输出太坑 import java.util.HashMap; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeSet; public class Main2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); String[] strs = str.split("/"); int hashSize = Integer.valueOf(strs[0]); String[] keys = null; if(strs[1].contains(",")) { keys = strs[1].split(","); } else { keys = new String[1]; keys[0] = strs[1]; } TreeSet<Integer> set = new TreeSet<Integer>(); HashMap<Integer,Integer> map = new HashMap<>(); int[] hash = new int[hashSize]; for(int i = 0; i < keys.length; i++) { if(keys[i].contains("-")) { String[] s = keys[i].split("-"); int left = Integer.valueOf(s[0]); int right = Integer.valueOf(s[1]); for(int j = left; j <= right; j++) { int mod = j % hashSize; hash[mod]++; map.put(j,mod); } } else { int mod = Integer.valueOf(keys[i]) % hashSize; hash[mod]++; map.put(Integer.valueOf(keys[i]),mod); } } int max = 0; int maxIndex = -1; for(int i = 0; i < hash.length; i++) { if(hash[i] > max) { maxIndex = i; max = hash[i]; } } for(Entry<Integer,Integer> entry : map.entrySet()) { if(entry.getValue() == maxIndex) { set.add(entry.getKey()); } } int[] arr = new int[set.size()]; int index = arr.length-1; for(Integer i : set) { arr[index--] = i; } System.out.print(max + "-" + maxIndex); System.out.print("-"); for(int i = 0; i < arr.length; i++) { System.out.print(arr[i]); if(i < arr.length-1) { System.out.print(" "); } } //4/1-20,100 scanner.close(); } }
我本地写完没粘上去就到时了😂
刚参加完,正好这两道题都AC了,分享一下你说的这题的代码,排版可能有点乱,毕竟时间紧张 def f(key,hashSize):
return key%hashSize
x = input()
#x = "4/1,1,1,1,1,2"
hashSize,keys = x.split("/")
hashSize = int(hashSize)
keys = [i for i in keys.split(",")]
key = []
for i in keys:
if "-" in i:
t1,t2 = i.split("-")
t1,t2 = int(t1),int(t2)
for j in range(t1,t2+1):
if int(j) not in key:
key.append(int(j))
else:
if int(i) not in key:
key.append(int(i))
hashTable = []
for i in range(hashSize):
hashTable.append([])
for i in key:
hashTable[f(i,hashSize)].insert(0,i)
maxLen = max([len(i) for i in hashTable])
for i in range(len(hashTable)):
if len(hashTable[i]) ==maxLen:
break
# output:
t = []
for j in hashTable[i]:
if j not in t:
t.append(j)
t = [ str(j) for j in t]
print(str(maxLen)+"-"+str(i)+"-"+" ".join(t))
我去又凉了,两道题感觉描述都很有问题,特别第一题,半天没看懂问的啥
感觉牛客网就够坑了,今天发现一个更坑的,***不能学学lc嘛🤣
输入是什么格式?真心看不懂,字符串?
你的是咋写的?我也是
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享