Skip to content

Instantly share code, notes, and snippets.

View markbrutx's full-sized avatar

Magzhan markbrutx

View GitHub Profile
@markbrutx
markbrutx / unique-paths.ts
Created August 12, 2023 20:46
62. Unique Paths
function uniquePaths(m: number, n: number): number {
let row: number[] = new Array(n).fill(1);
for (let i = 1; i < m; i++) {
let nextRow: number[] = new Array(n).fill(1);
for (let j = n-2; j>=0; j--) {
nextRow[j] = nextRow[j + 1] + row[j]
@markbrutx
markbrutx / partition-equal-subset-sum.ts
Created August 11, 2023 15:06
416. Partition Equal Subset Sum
function canPartition(nums: number[]): boolean {
const sum = nums.reduce((acc, cur) => acc + cur, 0);
if (sum % 2 !== 0) {
return false;
}
// промеждуточные суммы
let dp: Set<number> = new Set();
dp.add(0)
@markbrutx
markbrutx / longest-increasing-subsequence.ts
Created August 10, 2023 21:09
300. Longest Increasing Subsequence
function lengthOfLIS(nums: number[]): number {
const n = nums.length;
const dp: number[] = new Array(n).fill(1);
for(let i = n - 1; i >= 0; i--) {
for(let j = i +1; j < n; j++) {
if(nums[i] < nums[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1)
}
@markbrutx
markbrutx / word-break.ts
Created August 9, 2023 16:49
139. Word Break
function wordBreak(s: string, wordDict: string[]): boolean {
let dp: boolean[] = new Array(s.length + 1).fill(false)
dp[s.length] = true;
for(let i = s.length - 1; i >= 0; i--) {
for(let w of wordDict) {
if(
i + w.length <= s.length &&
s.substring(i, i + w.length) === w
@markbrutx
markbrutx / maximum-product-subarray.ts
Created August 8, 2023 19:55
152. Maximum Product Subarray
function maxProduct(nums: number[]): number {
let res = nums[0]
let curMax = nums[0];
let curMin = nums[0];
for (let i = 1; i < nums.length; i ++) {
let n = nums[i]
@markbrutx
markbrutx / coin-change.ts
Created August 7, 2023 16:53
322. Coin Change
function coinChange(coins: number[], amount: number): number {
let dp: number[] = new Array(amount+1).fill(amount+1);
dp[0] = 0;
for(let a = 1; a <= amount; a++) {
for(let c of coins) {
if(a - c >= 0) {
dp[a] = Math.min(dp[a], 1 + dp[a-c])
}
@markbrutx
markbrutx / decode-ways.ts
Created August 6, 2023 20:40
91. Decode Ways
function numDecodings(s: string): number {
const dp: {
[key: number]: number
} = {
[s.length] : 1
}
function dfs(i: number): number {
// base cases
if (i in dp) {
@markbrutx
markbrutx / palindromic-substrings.ts
Created August 5, 2023 18:32
647. Palindromic Substrings
function countSubstrings(s: string): number {
let res = 0;
for(let i = 0; i < s.length; i++) {
// не четные
res+= countPalindrome(s, i, i);
// четное
res+= countPalindrome(s, i, i+ 1);
@markbrutx
markbrutx / house-robber-ii.js
Created August 4, 2023 20:12
213. House Robber II
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function(nums) {
return Math.max(nums[0], rob(nums.slice(1)), rob(nums.slice(0, -1)))
function rob(nums) {
let curSkip = 0;
@markbrutx
markbrutx / house-robber.js
Created August 4, 2023 20:02
198. House Robber
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function(nums) {
let curSkip = 0;
let curRob = 0;
for (const n of nums) {
const temp = Math.max(n + curSkip, curRob)
curSkip = curRob