Java教程

差分

本文主要是介绍差分,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

https://leetcode.cn/problems/shifting-letters-ii/

 1 class Solution {
 2 public:
 3     string shiftingLetters(string s, vector<vector<int>>& shifts) {
 4         int n = s.size();
 5         vector<int> f(n + 1);
 6         /* 差分数组 */
 7         for (auto &shift : shifts) {
 8             int x = shift[2] * 2 - 1;
 9             f[shift[0]]     += x;
10             f[shift[1] + 1] -= x;
11         }
12 
13         int sum = 0;
14         string ans;
15         for (int i = 0; i < n; i++) { /* 前缀和求出最终的字符 */
16             sum += f[i];
17             int d = ((s[i] - 'a' + sum) % 26 + 26) % 26;
18             ans.push_back(d + 'a');
19         }
20         return ans;
21     }
22 };

 

这篇关于差分的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!