xxxxxxxxxx
const [waterStation, setWaterStation] = useState<string>('castles')
const [metric, setMetric] = useState<string>('rainfall')
//recommended way
const data = useMemo(() => chart_data?.[waterStation]?.[metric], [waterStation, metric])
// const data = chart_data[waterStation][metric]
//recommended way
const handleWaterStationChange = useCallback((option: string) => {
setWaterStation(option)
}, [])
const handleMetricChange = useCallback((option: string) => {
setMetric(option)
}, [])
xxxxxxxxxx
import { connectMenu } from 'react-instantsearch-dom';
const Filters = ({ items, currentRefinement, refine }) => (
<select
value={currentRefinement || ''}
onChange={event => refine(event.currentTarget.value)}
style={{padding:'10px 100px 10px 100px',borderRadius:'20px'}}
>
<option value="">See all options</option>
{items.map(item => (
<option
key={item.label}
value={item.isRefined ? currentRefinement : item.value}
>
{item.label}
</option>
))}
</select>
);
export default connectMenu(Filters);
xxxxxxxxxx
class Solution:
def findRLEArray(self, encoded1: list[list[int]],
encoded2: list[list[int]]) -> list[list[int]]:
ans = []
i = 0 # encoded1's index
j = 0 # encoded2's index
while i < len(encoded1) and j < len(encoded2):
mult = encoded1[i][0] * encoded2[j][0]
minFreq = min(encoded1[i][1], encoded2[j][1])
if ans and mult == ans[-1][0]:
ans[-1][1] += minFreq
else:
ans.append([mult, minFreq])
encoded1[i][1] -= minFreq
encoded2[j][1] -= minFreq
if encoded1[i][1] == 0:
i += 1
if encoded2[j][1] == 0:
j += 1
return ans