classSolution{public:voidsetZeroes(vector<vector<int>>& matrix){
set<int> r, c;int m = matrix.size();int n = matrix[0].size();for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(!matrix[i][j]){
r.emplace(i);
c.emplace(j);}}}for(auto it = r.begin(); it != r.end(); it++){for(int j =0; j < n; j++){
matrix[*it][j]=0;}}for(auto it = c.begin(); it != c.end(); it++){for(int i =0; i < m; i++){
matrix[i][*it]=0;}}}};
1171. 从链表中删去总和值为零的连续节点
代码实现
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/classSolution{public:
ListNode*removeZeroSumSublists(ListNode* head){
ListNode* traverse = head;
vector<int> arr;while(traverse){
arr.push_back(traverse->val);
traverse = traverse->next;}bool flag =true;while(flag){
flag =false;auto it = arr.begin();for(int i =0; i < arr.size(); i++){int sum =0;auto tmp = it;for(int j = i; j < arr.size(); j++){
sum +=*tmp;// cout << *tmp << endl;
tmp++;if(sum ==0){// cout << "fiajw" << endl;for(int k =0; k < j - i +1; k++){
it = arr.erase(it);}
flag =true;break;}}
it++;if(flag)break;}}if(arr.empty())returnnullptr;while(head->val != arr[0]) head = head->next;
ListNode* pre = head,*nex = head->next;for(int i =1; i < arr.size(); i++){while(nex->val != arr[i]) nex = nex->next;
pre->next = nex;
pre = nex;
nex = nex->next;}
pre->next =nullptr;return head;}};